Course Web Site: http://www.cs.kzoo.edu/cs487/ (or its alias, http://www.cs.kzoo.edu/cs490/)
Course Overview
This special topics course and (for some) senior seminar 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 software developers, becoming familiar with the ACM Code of Ethics.
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 software development progress throughout the course.
Seniors taking the course as a senior seminar will play a greater leadership role in the design and execution of the course. (See the senior seminar description for details.)
Prerequisite: Data Structures.
Objectives
The objectives of this course are for you to:
- Broaden your knowledge and understanding of various web development / software engineering topics.
- Further develop your software development skills in a number of areas through hands-on experience with one or more projects.
- Develop and apply professional "life-long learning" skills, on your own and in a group, using professional resources.
Topics:
In this course we will address many, although probably not all, of the following topics. The specific set of topics we focus on will depend in part on the previous experiences, interests, and project choices of the students in the class.
- Web architectural patterns
- Programming languages used for front-end and back-end development
- Usability, user interface issues, accessibility
- Databases and Database Design, e.g.,
- relational and NoSQL databases
- table normalization
- DFDs and E-R Diagrams
- Security Issues
- authentication / authorization
- data validation
- defensive programming
- Other traditional and agile software engineering topics,
e.g.,
- design methodologies
- UML
- user stories, use cases
- patterns (e.g., decorators, annotations, etc.)
- refactoring code
- testing, especially unit and regression; stubs & drivers
- project documentation
- Project Management, e.g.,
- version control
- continuous integration
- teamwork (roles, tasks, team dynamics, team management)
- project and team communication
- Ethical and professional standards
Activities and Assessment:
Books and resources will be identified throughout the quarter and collected in a growing class bibliography (link to be provided soon).
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 one or more web development projects, and maintaining a COMP 487/490 Growth Journal.
Individual tasks or assignments will be graded on the following scale:
Meets (High) Expectations 4 A Falls Short of Expectations 2 - 3 B - C (C - B) Poor Effort 1 D Not Done 0 F Stands Out 5
Individual grades will be combined and weighted as follows:
Topic and concept assessments 10% Individual growth as evidenced in Growth Journal 45% Contributions to the class
(e.g., presentations, presentation reflective responses,
class discussions, project contributions & leadership)45%
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.
Collaborative work: All work done in this course, whether individual or collaborative, should clearly state who contributed to it. Work such as presentations that draw on sources outside of class should clearly indicate the source(s) you used or about which you are reporting. I may occasionally ask members of teams 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.
Individual work: Formal topic/concept assessments, presentation reflective responses, and the Growth Journal will all be individual efforts.
Any student with a disability who needs an accommodation or other assistance in this course should make an appointment to speak with me as soon as possible.