SYLLABUS
This course will focus on software development methods and practices. Topics will include traditional and agile software engineering approaches, common processes and tools, database concepts,and user interface design. Students will develop or deepen skills, including analyzing existing code, developing and refactoring code, developing test cases, interacting with a relational database, working within a team, and working with large projects. Students will also further their understanding of their professional responsibilities as software developers, and become 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.
Quick Overview of COMP 305
Prerequisites | COMP 210 (Data Structures). |
---|---|
Instructor |
Sandino Vargas-Pérez Dr. Vargas-Pérez • he, him, his pronouns Olds/Upton 309 Office Hours:
|
Required Text | We will be using the following texts:
|
Other Texts | Other resources and useful references will be
identified throughout the quarter and collected in a growing class
bibliography on the class Teams site. Readings may come from
sources such as:
|
Microsoft Team Site | You can download the app and install it in your system here: MS Teams |
Goals and Objectives
The objectives of this course are for you to:
- Broaden your knowledge and understanding of various software engineering / software development topics.
- Enhance your software development skills — programming & teamwork — through hands-on experience with existing and new projects.
- Develop and apply professional life-long learning skills, including learning new computing skills on your own or in a group using professional resources.
Topics to be Covered
The following are the topics we will be learning about and discussing during COMP 305 (and a tentative schedule for when each of them will be covered).
- Essential Software Development tools, e.g., Linux/Unix, Make, Git
- Traditional and Agile software engineering approaches and practices, including: Design methodologies (e.g., SCRUM, UML), User stories and Use cases, Design patterns, Refactoring, Testing (especially unit and regression testing), Project documentation
- Impact of tools like ChatGPT, GitHub CoPilot, etc.
- Project Management: Version control & handling merge conflicts, Continuous integration, Tracking functionality requests and bug fixes, e.g., through road maps, Teamwork (roles, tasks, team dynamics, team management), Project and team communication
- Usability, user interface issues, accessibility
- Software Architectures, such as client/server, web-based, mobile, distributed
- Databases and Database Design: Relational vs. Non-relational, Relational table normalization, DFDs and E-R Diagrams
- Contributing to existing software projects
- Ethical and professional standards
Activities and Assessment
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 software projects, and reflecting on one's own progress and growth through weekly reflections.
Individual tasks or assignments will be graded on the following 4-point scale:
Meets (High) Expectations | 4 (A) | |
Near Expectations | 3 (B) | |
Below Expectations | 2 (C) | |
Poor Effort | 1 (D) | |
Not Done | 0 (F) | |
Stands Out | 5 | |
Final grades will be based on:
Topic and concept assessments | 25% | |
Individual growth as evidenced in weekly reflections | 20% | |
Contribution to Software Projects | 40% | |
Contributions to the class
(e.g., presentations, presentation reflective responses, class discussions) |
15% |
Details about the format for presentations, journal entries, and the final reflective essay, as well as reading assignments, announcements, links to class presentations, and other material, will be made available on the COMP 305 home page (or Teams). Students are responsible for checking these resources frequently.
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.
Respect in the Community: Creating a Culture of Support
K College is committed to fostering a supportive campus community that values respect, dignity, and safety free from fears of retaliation or reprisal. We all have a role in creating a supportive and respectful culture. To create an inclusive and supportive learning environment in which everyone can participate fully, please read and follow these Community Guidelines adapted from the Center for Research on Learning and Teaching (CRLT) at the University of Michigan and the guidelines for creating a culture of respect and support outlined in Respect in the Community: Creating a Culture of Support.
Academic Integrity
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 weekly reflections will all be individual efforts.