2014–2015 Computer Science Courses

 

CMPT 100 The Information Age: A Changing Society, Computers, and You, LE (3)
An overview of how computing technology—and the Internet—works and how it is transforming our society. This course is about seeing technology, thinking about it, understanding how basic aspects of it work in simple terms, and considering the current and potential impacts of technology on us and on our world. Topics include programming robots as well as three-dimensional animated worlds.
       
CMPT 140 Computer Science Principles (3)
An introduction to the history, social implications, great principles, and future of computing. Relevance of computing to the student and society will be emphasized. Students will learn the joy of programming a computer using a friendly, graphical language, and will discuss how computing empowers discovery and progress in other fields.
       
CMPT 200 Special Topics (1–4)
  300    
  400    
A special topics course covering new or specialized courses in Computer Science. Prerequisites will vary with course content.
       
CMPT 201 Introduction to Computer Science (4)
Introduction to programming fundamentals, including problem solving skills, program design, object-oriented programming, coding, testing, and debugging using the Java programming language. Three lectures and one two-hour lab. Co-requisite: MATH 105 and current computer literacy skills. Offered every Fall semester.
       
CMPT 202 Introduction to Data Structures (4)
An exploration of data structures including stacks, queues, trees, and dictionaries, and a comparison of the algorithmic efficiencies based upon their implementations. Three lectures and one two-hour lab. Prerequisites: CMPT 201. Offered every Spring semester.
       
CMPT 215 Emerging Scholars (1)
An invitation-only, seminar-style course for students enrolled in CMPT 201. Students will work through challenging, non-textbook activities that reinforce the computer science concepts that are keys to success in CMPT 201. Prerequisites: Enrolled in CMPT 201 and instructor permission.
       
CMPT 251 Computer Systems and Programming (4)
An examination of a computer system from the programmer’s perspective. We examine how your programs interact with the compiler, the assembler, the operating system, and the hardware. Such study helps explain how to write more efficient software. We will introduce and use the C programming language, the UNIX operating system, and Intel assembly. Offered every Fall semester. Prerequisites: CMPT 201.
       
CMPT 260 Computer System Fundamentals (4)
This course provides an overview of the fundamental components of a modern computer system including computer architecture and organization, operating systems, and computer networks. Additional topics include computer security, databases, the Internet and the World Wide Web.
       
CMPT 301 Artificial Intelligence (4)
The study of logical agents, search techniques, logic, game and decision trees, constraint satisfaction propagation, search techniques, heuristics and probability. Prerequisites: CMPT 202.
       
CMPT 306 Algorithms and Data Structures (4)
Algorithms and data structures including graphs, trees, algorithmic methods, and complexity analysis. Includes a two-hour lab. Prerequisites: CMPT 202 MATH 210. Offered every Fall semester.
       
CMPT 307 Database Systems (4)
A study of relational databases from theory through practical design, implementation, and application programming. The course also examines other topics such as relational algebra, SQL, and designing web interfaces. . Prerequisite: CMPT 202. Corequisite: CMPT 251
       
CMPT 315 Google Code Jam (1)

An opportunity to prepare for participation in the Google Code Jam, an international programming competition offered by Google each April. Each week students will spend 90 minutes in a lab setting preparing for the Code Jam by working through practice exercises as well as problems from previous Code Jam competitions. This course concludes with each student participating in the Code Jam in April. Although students are permitted to repeat this course, only 2 hours of CMPT 310 may be applied towards upper division electives. Prerequisites: CMPT 201 or instructor permission.

       
CMPT 322 Software Engineering (4)
An overview of constructing software using an Agile approach to software development and design. Topics include software planning and design, scheduling, testing and reliability, and software maintenance. A semester-long project developed in a group setting. Prerequisite: CMPT 202, 307.
       
CMPT 328 Computer Architecture (4)
Processor organization, memory system organization, bus structures, I/O and storage devices, interfacing and communication. Viewed through RISC assembly language, breadboards, and programming. Prerequisites: CMPT 251.
       
CMPT 335 Computer Security (4)
An introduction to the fundamentals of computer security as it relates to several areas of computer science including networking, operating systems, and databases. Topics range from cryptography to less technical areas such as user policies and legal issues. Basic UNIX/Linux skills are recommended. Prerequisite: CMPT 251.
       
CMPT 351 Operating Systems (4)
A study of the design of contemporary operating systems. Topics include process and thread management, CPU scheduling, concurrency and parallelism, memory management and I/O device management. Ongoing case studies include UNIX/Linux, Windows, as well as mobile operating systems. Prerequisites: CMPT 251, 306.
       
CMPT 352 Computer Networks (4)
A study of software components and protocols in contemporary computer networks with particular emphasis onTCP/IP networks and the Internet. Prerequisite: CMPT 202.
       
CMPT 355 Compilers (4)
Syntax analysis, semantics, code generation, optimization, and run time systems. A complete compiler for a small subset of the Java language will be implemented. Prerequisites: CMPT 202, 251.
       
CMPT 360 Computer Graphics (4)
Fundamental computer graphics algorithms, including two- and three-dimensional transformations, viewing projections, lighting models, texture mapping, and ray-tracing. Prerequisites: CMPT 306; MATH 201. Recommended: basic linear algebra skills.
       
CMPT 375 E-Commerce (4)
Topics include Internet technologies, e-commerce web sites, databases and information management, on-line auctions, and digital versus bricks-and-mortar versus bricks with clicks business models. Co-requisite: CMPT 307.
       
CMPT 385 Senior Project Proposal Writing (1)
Students will write a detailed proposal describing their capstone project to be completed in CMPT 390. Prerequisites: computer science or computer information systems major in the last Fall semester of his or her course of study. Offered every Fall semester.
       
CMPT 387 Undergraduate Teaching (1)
For teaching assistants in lower division computer science problem solving courses. A maximum of two credit hours of CMPT 387 may be applied toward the major or minor. Prerequisite: consent of program director.
       
CMPT 390 Senior Capstone Project (2)
A required capstone course for senior computer science and computer information systems majors. The purpose is to develop a significant independent software project. In addition, students are expected to submit portfolios of their coursework at Westminster College. Prerequisites: computer science or computer information systems major in the last Spring semester of his or her course of study. Offered every Spring semester.
       
CMPT 401 Directed Studies (1–4)
A tutorial-based course used only for student-initiated proposals for intensive individual study of topics not otherwise offered in the Computer Science Program. Prerequisite: consent of the instructor and school dean.
       
CMPT 440 Internship (1–8)
Offers students the opportunity to integrate classroom knowledge with practical experience. Prerequisites: junior or senior standing (for transfer students, at least 15 hours completed at Westminster), minimum 2.5 GPA, and consent of program director and Career Center internship coordinator. A maximum of 4 hours of CMPT 440 may be applied toward the major or minor.