Curriculum
Learn fundamental concepts of computer science, software engineering, and software development in a nine-month, six-course sequence.
Develop essential skills in object-oriented programming, data structures and algorithms in C++. Learn how to design and test software systems, explore systems programming, and understand software engineering life cycles and modeling.
Graduate certificate classes build upon what students learn each quarter. In addition to course content, students will have weekly homework and/or lab work outside of class. Learn more in the program FAQ. Students need to complete each course with a 2.7 or higher and maintain a cumulative 3.0 to earn the graduate certificate.
Course schedule
Each quarter you take one online asynchronous class, with a weekly optional on-campus office hour. For the second class, you have the flexibility to choose an online (asynchronous) or on campus (synchronous) class. Students enroll part time and typically take two classes each quarter. Your academic advisor is happy to help guide you.
Quarter | Course | Cr | Format |
---|---|---|---|
Autumn 2024 | CSS 501: Data Structures & Object-oriented Programming 1 | 4 | Online asynchronous |
Autumn 2024 | CSS 506: Software Development Processes | 2 | On campus or online asynchronous |
Winter 2025 | CSS 502: Data Structures & Object-oriented Programming 2 (prerequisite: CSS 501) | 4 | Online asynchronous |
Winter 2025 | CSS 507: Software Modeling Techniques (prerequisite: CSS 506) | 2 | On campus or online asynchronous |
Spring 2025 | CSS 503: Systems Programming (prerequisite: CSS 502) | 4 | Online asynchronous |
Spring 2025 | CSS 508: Software Testing & Quality (prerequisite: CSS 507) | 2 | On campus or online asynchronous |
Difference between online asynchronous and on-campus classes
Online asynchronous classes
- All required activities – 100% online
- Weekly lectures and material covered on your own schedule
- All lectures available in recorded format
- Assignment due dates set by instructor, found on syllabus
- For classes with no on-campus synchronous option (501, 502, 503), an optional one-hour weekly on-campus office hour is available
- Optional synchronous office hours available with faculty and teaching assistants
On-campus synchronous classes
- On-campus attendance to classes and exams are required
- Weekly lectures and material covered during on-campus class session
- Assignment due dates set by instructor, found on syllabus
- Optional synchronous office hours available with faculty and teaching assistants
Course descriptions
CSS 501: Data Structures and Object-oriented Programming 1
Covers data structures and object-oriented programming. Studies basic and advanced data types, their uses, and implementations. Students design solutions to programming problems using object-oriented techniques with various data types. Covers algorithms and their tradeoffs. Uses modern software engineering practices.
CSS 502: Data Structures and Object-oriented Programming 2
Covers advanced data structures included trees, balanced trees, heaps, graphs, and hash tables along with associated algorithms. Covers object-oriented programming with a focus on design and implementation of programs using inheritance and polymorphism. Introduces formal automata theory. (Prerequisite: CSS 501)
Examines the logical design and programming aspects of operating systems and network communication. Topics covered include process, threads, synchronization, deadlocks, memory management, virtual memory, file systems, and client-server network programming. (Prerequisite: CSS 502)
CSS 506: Software Development Processes
Provides a foundation in software engineering processes, methods and practices associated with prescriptive and agile software process models. Includes the creation of artifacts commonly used to communicate, justify, and manage computing projects.
CSS 507: Software Modeling Techniques
Provides the concepts and skills needed to use modeling in software analysis and design to foster understanding and communications of a problem and its potential solutions. Includes the creation of modeling artifacts for projects by hand and using CASE tools. (Prerequisite: CSS 506)
CSS 508: Software Testing and Quality
Reviews approaches, concepts and techniques used to validate and verify software methods used to improve software processes. Students reflect on the applicability of software engineering and computer science methods. (Prerequisite: CSS 507)