Fall 2017 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: Java & Lab
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 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 and MAT 140, or CMS 150.

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 495J Topic: Computational Photography

MAT 140 Introduction to Discrete Mathematics
Provides the foundation essential for sound mathematical reasoning and computer science. Topics include, but are not restricted to, propositional and predicate logic; proof strategies and induction; sets, functions, and recursion; elementary counting techniques; and number systems. Prerequisite: Math preparation sufficient to take calculus at the college level.