Large software systems have proven to be notoriously difficult to build, modify, and maintain despite the best efforts of many very capable people over the last 50 years. This is an upper-division program intended to help students gain the technical knowledge required to understand, analyze, modify, and build complex software systems. We will concentrate on learning the organization and complexity of large software systems that we do understand, and gaining practical experience in order to achieve a deeper understanding of the art, science, collaboration, and multidisciplinary skills required to work on computing solutions in real-world application domains. The technical topics will be selected from data structures, algorithm analysis, operating systems, networks, information security. Students will have an opportunity to engage in a substantial computing project through all the development phases: proposal, requirements, specification, design, and implementation. During the spring quarter, students will be expected to complete their projects, give a final presentation, and learn how to write a formal technical paper suitable for publication. There will also be opportunities for more focused work that aligns with individual students interests. This program is for advanced computer science students who satisfy the prerequisites. We also expect students to have the discipline, intellectual maturity, and self-motivation to complete homework at an advanced level, identify project topics, organize project teams and resources, and complete advanced project work independently.
Satisfactory completion of Computer Science Foundations or equivalent, including discrete mathematics, computer architecture, and one year of computer programming. Student background will be assessed based on an informal transcript of prior coursework and/or an interview with the faculty. Contact Richard Weiss at firstname.lastname@example.org before week 1 of classes.
New students accepted in winter quarter with signature.
Satisfactory completion of fall quarter Student-Originated Software or equivalent required, including prior coursework in intermediate-level computer programming, computer architecture, and discrete mathematics; and upper-division work in data structures, operating systems, and computer networking. Qualified students will be admitted on a space-available basis.
Students are expected to have completed Computer Science Foundations or equivalent, including discrete mathematics, computer architecture, and one year of computer programming.
Admission will be based on satisfactory completion the prerequisites. Student background will be assessed based on an informal transcript of prior course work and/or an interview with the faculty. Requests for signatures must be made by email (email@example.com).
Course Reference Numbers
Admission will be based on satisfactory completion of fall quarter of this program or equivalent, including prior course work in intermediate-level computer programming, computer architecture, and discrete mathematics as well as upper-division work in data structures, operating systems, and computer networking. For more information, contact Richard Weiss (firstname.lastname@example.org). Qualified students will be admitted on a space-available basis.
Course Reference Numbers
computer science, software engineering, and technology use and development in an application area.
All 32 credits of the work in this program are designed to be upper-division math/science. Students who successfully complete the program requirements will earn upper-division credit in computer science.