SYLLABUS

This special topics course (COMP487 portion) and senior seminar (COMP490 portion) will focus on web development technologies and practices. Topics will include languages and patterns used in web development, interacting with databases, and developing greater awareness of, and sensitivity to, customer and end-user needs.

Students will also develop or deepen their understanding of general software development topics, such as developing and refactoring code, developing test cases, working within a team, and managing large projects, as well as further their understanding of their professional responsibilities as computer scientists.


Quick Overview of COMP 487/490


Prerequisites COMP 210 (Data Structures). Students must have senior standing to take COMP490 (senior seminar portion).
Instructor Sandino Vargas-Pérez
Dr. Vargas-Pérez • he, him, his pronouns
Olds/Upton 208D
(269) 337-7564
Office Hours:
  • Mondays, Wednesdays, and Fridays: 1:00 p.m. to 2:00 p.m.
  • Thursdays: 11:10 a.m. to 12:00 p.m.
  • By appointment (check my weekly schedule)
Required Text None. I will provide you the readings as PDF or links to webpages. Books and resources will be identified throughout the quarter and collected in a growing class bibliography on Teams or the resources page.
Microsoft Team Site You can download the app and install it in your system here: MS Teams
Software You'll need to install software to code and test your exercises and final project. Suggested software include:
  • Web Browser: Safari, Chrome, or FireFox.
  • Server Stack: XAMPP includes Apache (web server), MariaDB (Database server, formally MySQL), and PHP.
  • HTML Editor: You can use the editor of your choice. Sublime Text or Notepad++ are good editors to start. If you need something more robust, feel free to explore.

Goals and Objectives

This course will have both conceptual and hands-on components. Students will research and present various topics, install and work with real-world projects, and document and reflect on their learning and their project development progress throughout the course.

Seniors taking the course as a senior seminar (COMP490) will play a greater leadership role in the design and execution of the course. See the senior seminar description below.

The objectives of this course are to help you:

  1. Further develop software development skills (programming & teamwork)
  2. Develop familiarity with some of the tools and techniques used in web development:
    • Design and implement web interfaces using HTML, CSS and JavaScript.
    • Develop web applications with server-side technologies.
    • Use databases in web applications.
    • Understand and put in practice basic principles of web security.
  3. Develop and apply professional life-long learning skills. You will:
    • Learn a new realm of programming on your own or in a group using professional resources.
    • Research unfamiliar topics and give presentations on them to the class
    • Provide analytical, summary, and reflective statements documenting software development progress and knowledge you have acquired of new topics.
    • Reflect about the impact that your work has on you, society, and the environment.

Topics to be Covered

The following are topics we will be learning about and discussing during COMP 487/490.

  • Introduction to web development
  • HTML5 and semantic markup
  • Web page styling with CSS and CSS frameworks
  • User interface design
  • Client-side programming with JavaScript
  • User input, menus, widgets
  • Server-side programming with PHP
  • Databases connection, creation, and manipulation.
  • XML and web services
  • Web security
  • Web server configuration and administration
  • Storing and retrieving data, locally and with a server
  • Social network integration
  • Ethics and responsibilities of a computer scientist
  • Issues created by computers and the Internet
  • Additional topics as driven by student interest

Community Guidelines

The following are a set of guidelines to create an inclusive and supportive learning environment in our class. It was adapted from the Center for Research on Learning and Teaching (CRLT) at the University of Michigan, by Dr. Josephine Mitchell.

Take care of each other

Get to know your classmates and call each other by your preferred names and pronouns.

Be an engaged scholar

Complete the pre-class readings and assignments, be on time to class, and engage with your classmates, professor, and the material in class.

Respectfully contribute to the learning environment

Treat each other with kindness, listen and develop awareness for ideas and opinions that are different from your own, be accountable to each other in discussions and group work, and foster an environment where everyone feels welcome.

Adopt an open mindset

Learning is a process! Strive for intellectual humility. Recognize that we will make mistakes as we learn. Think critically about how your perspectives have been shaped and be open to exploring new ideas and points of view.

Share responsibility for welcoming everyone to participate

If we tend to have a lot to say, make sure we leave space to hear and learn from others. If we tend to be quieter in group discussions, let us challenge ourselves to contribute so others can learn from us.

Challenge the idea, not the person

It is expected that different opinions and perspectives will be shared during discussions. We will be respectful of each other when debating an idea that may differ from our own. Personal attacks, divisive language, etc. will not be tolerated in our class.

Be accountable

We are in control of our learning and will get out of it what we put in. When working in groups, we will respect other group members and push ourselves to contribute to the group in ways that stretch our learning. We will maintain the highest standards of Academic Honesty and give credit to ideas that are not our own.


Senior Seminar

Each year the Computer Science department offers a senior seminar focusing on team-based project development within a specific context (e.g., mobile, web, or open source software development). This year we will study web development, from the front-end and back-end perspective. In addition to collaborating on a specific project, students present material on a wide range of topics, including software engineering methodologies, web development, professional ethics, and current trends in languages and software development tools.

As a senior seminar, the course has a strong problem-solving focus, encourages student participation and leadership, develops their communication skills, and stresses integration of the student's full undergraduate experience.

Student Agency

Students play a very strong leadership role in this class, including presentation of course material, gathering information about the course project(s), influencing the direction and progress of the project(s), and working collaboratively to achieve an outcome.

Presentations

Students present a significant percentage of the material covered in class, on topics such as traditional and agile software development methods, design patterns, database concepts, web-based development languages and tools, version control, testing tools and techniques, open source practices, current trends, and professional ethics. These presentations involve reading, analyzing, synthesizing, and communicating information from books, articles, and online sources representing the (primarily professional) literature of web development.

Project

Each year the instructor chooses a topic and one or more possible project ideas. Within the constraints imposed by those initial decisions, student decisions within the class may affect the choice of project, development language, or design methodology, and students always lead the requirements gathering phase and project design for the project implementation.

Communication Skills

Students employ and further develop their communication skills through formal class presentations, working with a community representative to develop project requirements, teamwork throughout the quarter as part of project implementation, presenting weekly oral status reports, developing internal and external documentation for their project, and writing reflective papers on the process of project development, the responsibilities of computer scientists, and the ways in which this course integrated their undergraduate experiences inside and outside the major.

Integration

The project and presentations that make up this course require students to draw on the skills and techniques they have acquired throughout their undergraduate career, not only from courses in the major, but often also from their study of other fields, internships, SIPs, and other outside activities. In addition, the course gives students a structured environment in which to practice and reflect on the critical life-long learning skills on which computer scientists depend, including learning new languages, methodologies, and frameworks. Thus, this course encourages integration of the student's past, present, and future, applying previous experiences to a current project that models future professional or research environments.


Activities and Assessments

Students will engage in a number of activities, including research and reading outside of class, presenting concepts in class, providing feedback on others' presentations, participating in class discussions, engaging in projects, and reflecting on one's own progress and growth.

Individual tasks or assignments will be graded on the following scale:

  • Exceeds Expectations 5pts.
  • Meets Expectations 4pts. (A)
  • Near Expectations 3pts. (B)
  • Below Expectations 2pts. (C)
  • Poor Effort 1pt. (D)
  • Not Done 0pts. (F)

Group project and presentations will be graded on the following scale:

Group Presentation
  • Preparedness, Participation, and Group Dynamics 4pts.
  • Presentation Content 4pts.
  • Presentation Skills 4pts.
  • Comprehension: Members showed a good understanding of their project and the proposal 4pts.
  • Visual Appeal: No errors in spelling, grammar and punctuation. Information is clear and concise on each slide. Visually appealing/engaging 4pt.
Group Project
  • Demo and Presentation: Does the presentation adequately cover all aspects of the project: objective or problem to be solved, the structure and technologies used, one or more interesting challenges, comprehensive evaluation, and meaningful conclusions 10pts.
  • Progress: Was substantial progress made on the project since the proposal presentation and the check-ins 4pts.
  • Teamwork: The team worked well together to achieve objectives. Each member contributed in a valuable way to the project. The final demo indicated a high level of mutual respect and collaboration 4pts.
  • Contribution to Class: The project demo offered good information or approach about the application. The demo also showed strong effort was made in breaking new ground using technology and acquiring new knowledge 8pts.
  • Content and Creativity: The demo was imaginative and effective in conveying the group's ideas to the audience 4pt.

Individual grades will be combined and weighted as follows:

  • Topic and concept assessments 10%
  • Individual growth as evidenced through reflections, project contributions & leadership 45%
  • Contributions to the class via presentations, audience reflective responses, class discussions, and more 45%

Details about the format for presentations, reflection entries, discussions, and the final project as well as reading assignments, announcements, links to class presentations, and other material, will be made available on the schedule page or via Teams.


Attendance and Participation

Since this class will be highly participatory and collaborative, regular attendance and fully engaged participation is crucial to everyone's learning and will weigh heavily in your grade. Please be sure to talk to me in advance if you must miss any class meetings. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. Student presentations in this course will be as important as presentations by the instructor; you should obviously prepare for your own presentations carefully, but you should also attend to your classmates' presentations thoughtfully and actively.

Meeting deadlines will also be very important -- in a collaborative setting such as this class, it is essential that you be ready with presentations and complete software development assignments in a timely fashion. Programming projects, in particular, are time-consuming and difficult to predict, but time-management skills are as critical in industry as they are in college.


Collaboration and the Honor System

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Project development: Most of the development (software, research, and so on) in this class will be highly collaborative. Working effectively as a team will be an important component. Your responsibilities under the Honor Code include contributing to the team in all ways, documenting everyone who worked on any piece of code, and acknowledging all help you and your team receive from any source, including books, articles, websites, classmates, your instructor, etc. Discussing group assignments with members of other teams is allowed in this class. I may occasionally ask all the members of a group to evaluate the effort and effectiveness of their own work and that of others in the group; anyone who feels that they are being put at a disadvantage because of lack of engagement of someone else in their group should talk to me about it.

Class presentations should represent your own analysis and synthesis of ideas drawn from one or more sources. Your presentation should indicate clearly the source(s) you used or about which you are reporting. You may work on presentations collaboratively or individually, depending on the topic. Be sure to discuss any proposed collaborations with me in advance.

Individual work: Formal topic/concept assessments, presentation reflective responses, and personal growth reflections will all be individual efforts.