Fall 2018 Course Descriptions for
Computer Science

CMS 167 Problem Solving I: with Java
Introduction to fundamental aspects of programming, focusing on problem solving, software design concepts, and their realization as computer programs. Topics include: variables, procedural abstraction, control structures, iteration, representation of numbers, and data types. Introduction to high-level programming language to gain mastery of these principles provided in classroom activities and closed laboratory experiences. Five semester-hour course.

CMS 167L Problem Solving I with lab
Develops proficiency in using the programming principles introduced in CMS 167 and experience in incorporating those principles into working computer programs.

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 215 Business Application of Computer Science
Overview of key computer science concepts in the context of business applications, including advanced spreadsheet programming, data management, information security, and data analytics. Includes use of common software packages such as Microsoft Excel, relational database systems, and an introduction to programming in a general-purpose language such as Python or R.

CMS 230 Introduction to Computer Systems
Introduction to the study of how software controls the critical hardware components of a computer's architecture – the CPU and RAM. Topics include development of C language programs, comparison of high-order procedural languages to machine language programs, CPU organization and functionality at the register/bus level, instruction formats, and development of machine language and assembly level programs using multiple addressing modes, flow-of-control branching and subroutine calls. Prerequisite: CMS 170.

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 380 Simulation Analysis & Design
Explores the use of probability theory and statistical methods in the development of computer simulations used to study/model real-world phenomenon. Prerequisite: CMS 270.

CMS 450 Computer Networks
Study of the technology, architecture, and software used by systems of network-connected computers. Topics include data transmission, local area network architectures, network protocols, inter-networking, distributed systems, security, and network applications such as email, WWW, and FTP. Students will develop programs that run concurrently on multiple computers. Prerequisite: CMS 330.

CMS 495 Special Topics
An intensive exploration of a specialized area of computer science.