Computer Science
Spring 2018

CMS 170 Problem Solving II with Java
Develops discipline in program design, problem solving, debugging, and testing, with an introduction to data structures. Topics include: abstract data types, complexity analysis, and recursion. Basic data structures (queues, stacks, trees, and graphs) and transformations (sorting and searching) are introduced as representative of the fundamental tools that are used to aid in software development. A high-level programming language is used to construct programs of a moderate size. Prerequisite: CMS 167 and 167L.

CMS 270 Object-Oriented Design & Development
Object-oriented programming, event-driven programming, UML, unit testing, virtual machines, design patterns, exception handling, and user interfaces. Uses Java and assumes knowledge of a procedural or object-oriented language. Prerequisite: CMS 170.

CMS 330 System Software Principles
Short history of programming languages and their construction. Techniques of language translation including lexical analysis, grammars, and parsers. Analysis of the structure and functionality of modern operating system software, with emphasis on concurrent processes. Topics include: process scheduling, communication, and synchronization; API services; and design and development of concurrent program using OS features. Prerequisite: CMS 230.

CMS 375 Database Design and Development
Introduces design and implementation of database systems. Using a relational database as a backdrop, this course addresses design issues, structured query language (SQL), data integrity, normalization, transaction processing, writing triggers and stored procedures, and developing applications using a custom database language and with Java and JDBC. This course also explores NoSQL data models. Students will need access to a PC or Mac on which to load the database software that will be used in the course. Note: System requirements may vary from year to year. Prerequisite: CMS 270.

CMS 460 Algorithm Analysis
Detailed study of algorithm design and analysis, including greedy algorithms, divide and conquer, dynamic programming, backtracking, and brance and bound. Emphasis on verification and analysis of time space complexity. NP theory is introduced. Prerequisites: CMS 270 and MAT 140.

CMS 484 Computer Science Capstone
The Senior Capstone course provides a culminating and integrative educational experience. While participating on a team with other students, students will design and implement a large-scale software project. Class meetings will be used for teams to demonstrate the progress of their project as well as for the teams to meet and work. Team meetings outside of class will be required. Prerequisite: One 400-level CMS course.

CMS 495 Topic in Computer Science
An intensive exploration of a specialized area of computer science.