Instructor:

Course Web Site:   www.cs.kzoo.edu/cs488/
Course Teams Site:   Advanced Software Development

Readings:   Resources and useful references will be identified throughout the quarter and collected in a growing class bibliography on the class Teams site.


Course Overview

This course will focus on software development philosophies and practices. Topics will include traditional and agile software engineering approaches, common processes and tools, and the use of modern AI in software development. Students will develop or deepen skills, including developing and refactoring code, developing test cases, interacting with generative AI, interacting with a relational database, working within a team, and managing 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.

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:

  1. Broaden your knowledge and understanding of various software engineering / software development topics.
  2. Further develop your software development skills — programming & teamwork — through hands-on experience with one or more existing projects.
  3. Experiment with AI-assisted software development.
  4. 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.

Topics:

In this course we will address many, although certainly 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.

  • Traditional / Agile software engineering approaches
  • Impact of Tools like ChatGPT, GitHub CoPilot, etc.
  • Project Management
  • Software Architectures, such as client/server, web-based, mobile, distributed
  • Databases and Database Design
  • Usability, user interface issues, accessibility
  • 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 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%
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 488 home page (or on Moodle or Piazza, both of which will be accessible from the class home page).
http://www.cs.kzoo.edu/cs488/
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 the Growth Journal will all be individual efforts.