Student Records

Student Records Home
Academic Calendars
College Catalogue
Exam Schedule
Class Schedule

Computer Science


Changes effective Fall Term 2008

Anderson Carrington Child Holt
James

The Department of Mathematics and Computer Science offers a computer science major that develops students' ability to design and implement computer programs to solve many types of problems. Based on curricula developed by the Association for Computing Machinery (ACM), the major prepares students for graduate study and for many interesting computer-related endeavors. The computer science minor complements any major for which computer applications are important. The minor also gives students excellent preparation for many computer-related occupations. 

MAJOR REQUIREMENTS
Fourteen (14) courses are required. A first-year student majoring in computer science will typically take CMS 167A/167B and MAT 111 in the fall, and CMS 170 and MAT 140 in the spring. Students who are not prepared to start with calculus should start with MAT 109 instead of MAT 111

CORE COURSES

  • CMS 167A/167B Introduction to Computer Programming
  • CMS 170 Computer Science Principles I
  • CMS 230 Introduction to Computer Systems
  • CMS 270 Computer Science Principles II (object oriented design)
  • CMS 330 System Software Principles
  • CMS 360 Algorithm Analysis
  • CMS 484 Senior Computer Science Capstone
  • CMS 485 Senior Seminar in Computer Science

ELECTIVES
Two (2) of the following are required; one (1) of these must be a 400-level course.

  • CMS 375 Database Management Systems Design
  • CMS 395 Topics in Computer Science
  • CMS 430 Artificial Intelligence
  • CMS 440 Computer Graphics
  • CMS 450 Networks
  • CMS 480 Programming Language Translation

ADDITIONAL REQUIREMENTS

  • MAT 111 Calculus I
  • MAT 140 Introduction to Discrete Mathematics
  • MAT 219 Probability and Statistics
  • MAT 310 Applied Discrete Mathematics

    In addition, MAT 112 Calculus II is strongly recommended for students considering graduate education in Computer Science.

MINOR REQUIREMENTS
Eight (8) courses are required: the following four (4) courses and four (4) additional classes chosen from requirements for the major. 

CORE COURSES

  • CMS 167A/167B Introduction to Computer Programming
  • CMS 170 Computer Science Principles I
  • CMS 270 Computer Science Principles II
  • MAT 110 Applied Calculus OR MAT 111 Calculus I

 

Course of Study


CMS 167A/167B Introduction to Computer Programming:
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.

CMS 170 Computer Science Principles I: 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 167A/167B. 

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. Prerequisites: CMS 170 and MAT140.

CMS 270 Computer Science Principles II: 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 360 Algorithm Analysis: Detailed study of algorithm design and analysis, including greedy algorithm, divide and conquer, dynamic programming, backtracking, and branch and bound. Emphasis on verification and analysis of time space complexity. NP theory is introduced. Prerequisites: CMS 270 and MAT 140. 

CMS 375 Database Management Systems Design: Introduction to design and management of database systems. The course project involves design and implementation of a relational database. Topics include file organization, relational models and their implementations, query language theory, and data normalization. Prerequisites: CMS 370 and MAT 140

CMS 395/495 Topics in Computer Science: An intensive introduction to a specialized area of computer science. Example topics are: user interface design, parallel and distributed processing, multimedia development, theory of computation, network programming, modeling and simulation, and software development tools. Prerequisites: CMS 270 and consent. 

CMS 430 Artificial Intelligence: Selective survey of key concepts and applications of artificial intelligence and an in-depth experience with a language commonly used for building AI systems (e.g., LISP or Prolog). Subtopics include knowledge representation, state space/searching, heuristic search, expert systems, expert system shells, natural language processing, propositional logic, learning and cognitive models, and vision. Prerequisite: MAT 310.

CMS 440 Computer Graphics: Survey of computer graphic hardware, primitive graphic operations and implementations, two-dimensional and three-dimensional transformations, hidden lines and surface removal, illumination and shading models, curves and surface, color modeling, and animation. 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 480 Programming Language Translation: An in-depth study of the principles and design aspects of programming language translation. The major components of a compiler are discussed: lexical analysis, syntactic analysis, type checking, code generation, and optimization. Alternate parsing strategies are presented and compared with respect to space and time tradeoffs. A course project consists of the design and construction of a small compiler. Prerequisites: CMS 270 and CMS 330. 

CMS 484 Senior 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 485 Senior Seminar in Computer Science: Students read computer science literature and make presentations on topics chosen from current technology and research in computer science. Prerequisite: one 400-level CMS course.

CMS 499 Independent Study: Covers selected topics in computer science. May be repeated for credit.