CPSC 329 Software Development Fall 2026

CPSC 329 Course Information

On this page:


Course Description and Objectives

Catalogue description:

This course continues the study of programming by focusing on software design, development, and verification — the skills beyond fluency in a particular language which are necessary for developing large, reliable programs. Topics include object-oriented design, the use of APIs, and testing and verification. Techniques common in modern software development will also be studied. Specific techniques may include GUIs and event-driven programming, multi-threading, client-server networking, fault-tolerant computing, stream programming, and security.

This course completes the programming sequence begun by CPSC 124 and 225 — CPSC 124 introduces the basic ideas of programming along with the syntax and semantics of the Java programming language, CPSC 225 focuses on common data structures as the organizational building blocks of programs, and CPSC 329 addresses creating good software as well some of the specific technologies found in software applications.

Four key points are at the core of good software:

  • fully understanding what the software is to do,
  • planning and design before coding,
  • proper use of modularity and abstraction in the design,
  • and building in reliability through good coding practices and the integration of testing in the implementation process.

This course will address how to achieve those points. In addition, students will gain:

  • an organized approach to software development;
  • an understanding of the core principles of object-oriented design, and the ability to apply those principles to create flexible and maintainable software;
  • a habit of good software, which includes coding standards, documentation, appreciation of the value of good design (and the willpower to refactor as needed to improve the design), and testing;
  • experience with a substantial project, working in teams, and working with someone else's code;
  • skills for life-long learning, specifically learning from examples, tutorials, and APIs;
  • technical skills relevant to software development, including the use of integrated development environments, version control, and unit testing; and
  • a basic technical understanding of some aspects of modern software such as GUIs, event-driven programming, user interface design, client-server networking, and threads.

Class Format and Expectations

This course has three 60-minute class (lecture) meetings and one 90-minute lab session per week. On-time attendance is expected for all scheduled class meetings and lab sessions. In addition, attendance is required at five 20-minute handin meetings following project submission deadlines. Dates for these will be established early in the semester.

As this is a software development course, the bulk of the outside-of-class time will be devoted to a series of projects. The projects are cumulative, each adding new features and functionality to previous stages, and most are team projects. Being successful requires awareness of deadlines, careful time management, steady effort, and working with others' schedules.

Additional out-of-class work includes finishing labs (if not completed during the lab period) and studying for exams. All together, students should expect to spend approximately 8-10 hours per week on work outside of class. While your experience may vary from topic to topic or from week to week, if you routinely spend substantially more time or you feel like you are spinning your wheels and not making progress, you should visit office hours for help.


Prerequisites

CPSC 225 is required.
There will be a brief review of key object-oriented concepts at the beginning of the course, but students are expected to be familiar with basic object-oriented programming in Java (including writing classes and using objects) as well as common ADTs (List, Stack, Queue, Map, Priority Queue) and the associated Java Collections classes.


Required Materials
Textbook

There is no textbook; supplementary reading and reference material will be posted on the schedule page.

Software

Eclipse 2026-06, Java 21, and JavaFX will be used in this course. It is highly recommended that you use the campus Linux environment, accessible in Demarest 002 or remotely through the Linux VDI, though the necessary software is freely available for multiple platforms so it is possible to set up your own computer if desired.