CPSC 329 | Software Development | Fall 2017 |
On this page:
Course 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 is required for the major in computer science. It includes a required lab component. |
---|---|
Course Content and Objectives |
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 this course addresses creating good software. Four key points are at the core of good software:
This course will address how to achieve those points. In addition, students will gain:
|
Prerequisites |
CPSC 225 is required. |
Textbook |
There is no required textbook. Material will be handed out or posted on the course webpage. |
Software |
You will be interacting with a server set up on a machine running within the department. All of the client software needed for this course is available on the Linux machines in Lansing 310 and Rosenberg 009. If you would like to use your own computer, check back for information on how to set it up. |
Time Required |
Software development is necessarily practiced by doing, and implementing large software systems takes time. Students should expect to spend a significant amount of time outside of class doing readings and preparing for class, learning new skills through tutorial-style lab assignments, and completing a substantial project. This will require awareness of deadlines and careful time management. In addition, most assignments will be group assignments, requiring planning and coordination with your group. |