Computer Science Courses


Computer Science

CMPT 140 Computer Science Principles (3)
This course is an introduction to the history, social implications, great principles, and future of computing. Relevance of computing to students 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. (WCore: WCSAM)
CMPT 150 Math & Technology of Entertainment Arts (3)
Explore the math and technology behind computer animation and video game design. Ever wonder while watching a movie: “How did they do that?” Students will learn the mathematical and computational theory behind image processing, 2D and 3D computer graphics and special effects. This seminar will discuss the progress of computer graphics research over the last fifty years. This course fulfills the Quantitative Emphasis (QE) requirement. (WCore: WCSAM, QE)
CMPT 190 Learning to Code (2)
A gentle introduction to programming fundamentals including coding, testing, and debugging using the Python programming language. This course is appropriate for students with no programming experience and will introduce basic variables, functions, conditionals, loops, and problem-solving skills through programming. This class meets for four hours per week for half semester.
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. This class meets for five hours and includes an integrated lab.
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. This class meets for five hours and includes an integrated lab.
CMPT 210 Just Enough Java (2)
An overview of introductory principles of programming in Java. This 7-week course is intended for those who have taken CMPT 190 Learning to Code or have had prior programming experience and prepares the student with enough Java skills for taking CMPT 202 Introduction to Data Structures, a course taught entirely in Java.
CMPT 215 Emerging Scholars (0-1)
A peer-led, 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. this course is highly recommended for all CMPT 201 students and may be taken for ) credits if students are already registered for 16 credits.
CMPT 251 Computer Systems and Programming (4)
An examination of a computer system from the programmer’s perspective. Examines how your programs interact with the compiler, the assembler, operating system, the operating system, and hardware, enabling students to write software that is efficient, modular, and versatile. Introduces the C programming language, the Linux operating system, and assembly programming.
CMPT 300 Special Topics in Computer Science (1–4)
A special topics course covering new or specialized courses in Computer Science.
CMPT 301 Artificial Intelligence (4)
Introduces the principles and techniques of modern artificial intelligence, including problem solving paradigms and intelligent agents for solving real world problems. Topics include search techniques, games, machine learning, logic, and constraint satisfaction problems.
CMPT 306 Algorithms (4)
A study of balanced search trees, algorithms, and complexity analysis. This class meets for five hours and includes an integrated lab.
CMPT 307 Databases
A study of relational databases from theory through practical design, implementation, and application programming using SQL. The course also examines other topics such as alternative database models, relational algebra, and web application frameworks.
CMPT 311 Machine Learning (4)
An introduction to the discipline of applying statistical models to data, with a focus on programming. Students will learn to implement model inference algorithms as well as use libraries for advanced algorithms beyond the scope of this course. Recommended pre-requisite: DATA 220 or WCSAM 203
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 is developed in a group setting.
CMPT 328 Computer Architecture (4)
An overview of computer hardware and the processing of instructions including processor and memory system organization, bus structures, I/O, and secondary storage devices. A RISC assembly language is used extensively.
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.
CMPT  341 Programming Languages (4)
The study of language paradigms, data types, and structure. Coverage includes procedural, functional, and interpreted languages.
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.
CMPT 352 Computer Networks (4)
A study of software components and protocols in contemporary computer networks with particular emphasis on TCP/IP networks and the Internet.
CMPT 355 Compilers (4)
Syntax analysis, semantics, code generation, optimization, and run time systems. A complete compiler for a programming language will be implemented.
CMPT 360 Computer Graphics (4)
Fundamental computer graphics algorithms, including two- and three-dimensional transformations, viewing projections, lighting models, texture mapping, and ray-tracing. Recommended: basic linear algebra skills.
CMPT 375 Web Applications (4)
An introduction to designing and developing web applications using a variety of programming languages and frameworks. Topics include front-end and back-end web app architecture, e-commerce websites, and object-relational mapping.
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 their course of study.
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. Program chair permission required. This course is repeatable for credit.
CMPT 390 Senior Capstone (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. Requires Computer Science or Computer Information Systems major in the last Spring semester of their course of study. (WCore: SC)
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. Instructor and school dean permissions required. This course is repeatable for credit.
CMPT 440 Internship (1–8)
Offers students the opportunity to integrate classroom knowledge with practical experience. Requires 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 2 hours of CMPT 440 may be applied toward the Computer Science major. This course is repeatable for credit.