These pages are maintained by Dr. Chris Taylor, Professor and Program Director for the Software Engineering program.

Curriculum Information for Computer Science and Software Engineering

Computer Science

Students will learn on the leading edge of this technological revolution, developing skills to solve problems using algorithms, applied mathematics, and artificial intelligence in a hands-on environment working on real problems with faculty who have industry experience.

Software Engineering

Software engineering applies engineering concepts, techniques and methods to the development of software systems. The software engineering program develops engineering professionals with a mastery of software development theory, practice and process. Software engineering is based on computer science in the same way other engineering disciplines are based on physical or life sciences. However, it adds an emphasis on issues of requirements, process, design, measurement, analysis and verification, providing a strong foundation in engineering principles and practice as applied to software development.

First Year Software Sequence

The first year software sequence for computer engineering, computer science, and software engineering students.

CS1011: Software Development I

This course provides an introduction to object-oriented software development using the Java programming language. Emphasis is placed on translating written problem descriptions into robust software solutions. Topics covered include Java program structure, algorithmic problem solving and modularization, I/O statements, control constructs, looping techniques, class libraries, user defined classes and methods, arrays, and ArrayLists. (prereq: none) (3-2-4)

CS1021: Software Development II

This course continues the study of objected-oriented software development using the Java programming language. Students design, document and implement software classes and incorporate these classes into larger applications. Topics covered include abstraction, encapsulation, declaring and implementing abstract data types, interfaces, inheritance, polymorphism, graphical user interfaces, simple event-driven programming, exception handling, and file I/O. (prereq: CS 1011 or SE1011) (3-2-4)

CS2852: Data Structures

This course covers the organization of data and the algorithms that act upon them. The topics of arrays, linked lists, stacks, queues, trees, sets, and hash tables are introduced. Fundamentals of algorithm performance are also introduced, with an emphasis placed on time complexity analysis. Laboratory activities include implementation of data structures as well as the application of data structures from standard libraries. (prereq: CS 1021 or SE 1021) (3-2-4)

Senior Design

Each student team must specify, design, implement, document, and test a substantial software project. Teams meet regularly with their instructor to track technical and project management issues. (prereq: completion of core courses through junior year (a maximum of two may be missing) or approved plan of study to complete the degree by the following Fall Quarter) (2-2-3)