Computer Science (CS)
Course numbers with the # symbol included (e.g. #400) have not been taught in the last 3 years.
CS 400 - Introduction to Computing
Initial exploration of computing, including comparison of the various subfields. A wide range of issues, including fundamental concepts, selected current topics and the role of both computing and computing professionals in organizations and in society are also discussed. Cr/F.
CS 401 - Computers and Their Applications
Use of computers to manage and analyze information across a variety of settings and disciplines. Introduces major categories of computer software, including word processing, spreadsheets and database systems. Covers basic computer concepts and the computer's role in today's society. Significant hands-on work required outside of the class. Not open to CS majors. CEPS students should check with their major department for approval.
Equivalent(s): CIE 530, CS 401H, CS 495, DCE 491, DCE 492, INCO 495
CS #404 - Do-It-Yourself Internet
The objective of this course is to demystify the design process that leads to the evolution of the Internet. In doing so, we investigate the ways that technology changes to meet the needs of society, how society changes in response to these new technologies and how these societal changes create pressures that produce needs for new technologies.
CS 405 - Introduction to Applications Programming
Introduces the concepts and techniques of computer programming. Particular emphasis on computer programming as a problem-solving technique for business applications. The basic software development process (modeling, algorithm design, programming, testing and debugging) is illustrated. CEPS students should check with their major department for approval. Not open to CS and IT majors.
CS 408 - Living in a Networked World: The Good, the Bad, and the Ugly
The objective of this course is to explore the implications of living in a networked world. The course surveys the fundamental technologies and practices that make up the Internet and then ask the student to examine the ramifications of using the technologies. Users of the technologies should understand the technology in order to make educated decisions about how to use it safely and effectively. Students have the opportunity to self-publish by using various current technologies including blogs, discussion boards, email and creating web pages using xhtml.
CS 410C - Introduction to Scientific Programming/C
Credits: 0 or 4
Introduces the concepts and techniques of computer programming. Particular emphasis on computer programming as a problem-solving technique in science and engineering applications. Good programming style is stressed. Significant out-of-class programming required.
Equivalent(s): CS 410
Mutual Exclusion: No credit for students who have taken CS 415.
CS 410P - Introduction to Scientific Programming/Python
Credits: 0 or 4
Introduces the concepts and techniques of computer programming. Particular emphasis on computer programming as a problem-solving technique in science and engineering applications. Good programming style is stressed. Significant out-of-class programming required. Not open to students who have completed CS 415 or the equivalent.
Equivalent(s): CS 410, CS 415
CS 414 - From Problems to Algorithms to Programs
This course is an introduction to the design and implementation of computer programs. The basic software development process (modeling, algorithm design, programming, testing and debugging) is illustrated through problem examples. Programming techniques are introduced to allow students to implement and evaluate solutions as programs.
Attributes: Quantitative Reasoning(Disc)
CS 415 - Introduction to Computer Science I
Credits: 0 or 4
Theory and practice of computer science. Algorithm development and analysis; data abstraction techniques; elementary data structures; dynamic memory manipulation; debugging; and program design issues. Computer systems and applications. Intended for CS majors.
Mutual Exclusion: No credit for students who have taken CS 410C.
CS 416 - Introduction to Computer Science II
Credits: 0 or 4
Theory and practice of computer science. Algorithm development and analysis; data abstraction techniques; elementary data structures; dynamic memory manipulation; debugging; and program design issues. Computer systems and applications. Intended for CS majors. Prereq: CS 415.
CS 417 - From Programs to Computer Science
Credits: 0 or 4
Accelerated coverage of programming techniques for students with experience equivalent to CS410 or CS 414. Covers basic algorithm analysis. Topics include basics of classes, inheritance, and data abstraction; linear data structures (vectors, lists, stacks and queues); trees and simple graphs; hash tables; sorting and searching; recursion; and basic graph traversal algorithms. Numerous labs and programming assignments build skills in planning, problem solving, and debugging: this is a hands on course. Prereq: CS 410 or CS 414 or equivalent.
CS 457 - Introduction to Data Science and Analytics
An introduction to data science and analytics. Overview of the use of analytics by industry, government, and nongovernmental organizations. Impact of analytics on society, ethical use of analytics. Methods of data generation, data management, data cleaning, and data preparation, with a focus on visual and exploratory analysis. Project-based, with an emphasis on collaborative, experiential learning. Design and implementation of programs, use of statistical software. Not open to CS and IT majors.
Equivalent(s): DATA 557
CS 501 - Professional Ethics and Communication in Technology-related Fields
A mixed lecture/seminar course intended to improve both reasoning and ability to communicate effectively in front of an audience. Students learn basic forms of ethical argument, they read about ethical situations in which technology and technology professions play a key role, and they participate in student-led discussions about the reading. Students also make oral presentations about both ethical and technical topics, and evaluate each other's presentations in order to improve their sense for what makes a good presentation. Prereq: ENGL 401.
Attributes: Environment,TechSociety(Disc); Inquiry (Discovery)
CS 515 - Data Structures and Introduction to Algorithms
Credits: 0 or 4
Reviews basic data structures; advanced data structures such as graphs, B-trees, and AVL trees; abstract data structure design and programming techniques; use of data abstraction language. Introduction to algorithm analysis. Prereq: CS 416 or CS 417.
CS 518 - Introduction to Software Engineering
Study of software development practices and processes in the following areas: software life cycle; system validation and verification; development pipeline; cloud infrastructures; virtual machines, and containers; logging, instrumentation, and performance; fundamental security concepts. Experience working in groups. Restricted to students not in Senior Standing. Prereq: CS 416 or CS 417 or equivalent.
CS 520 - Assembly Language Programming and Machine Organization
Credits: 0 or 4
Assembly language programming and machine organization: program and data representation; registers, instructions, and addressing modes; assemblers and linkers. Impact of hardware on software and software on hardware. Prereq: CS 416 or CS 417.
Equivalent(s): CS 611
CS 580 - Introduction to Topics in Computing
Introductory material not normally covered in regular course offerings, but of value to students prior to internships or senior-level courses.
Repeat Rule: May be repeated for a maximum of 6 credits.
CS 619 - Introduction to Object-Oriented Design and Development
Credits: 0 or 4
Principles of problem analysis and software design applied to the development cycle of a software system (i.e. from system requirements specification to design, implementation, and system test). Design and implementation using object-oriented principles, patterns, and tools. Experience in understanding and debugging software systems. Experience in working in groups. Prereq: CS 515.
Equivalent(s): CS 516
CS 620 - Operating System Fundamentals
Introduces operating system concepts and design. Process and memory management; scheduling; file systems;storage devices; inter-process communication. Prereq: CS 520.
Equivalent(s): CS 610
CS 659 - Introduction to the Theory of Computation
Review of sets, relations, and languages. Induction and diagonalization. Finite automata, context-free languages, pushdown automata. Basic complexity theory. Prereq: MATH 531.
CS 671 - Programming Language Concepts and Features
Explores the main features of modern, high-level, general purpose programming languages from the user (programmer) point of view. Provides students with an opportunity to use non-imperative programming paradigms, such as object-oriented, functional, and logical, and to learn how specific features of such languages can be used efficiently in solving programming problems. Prereq: CS 520.
CS 696 - Independent Study
Individual projects developed and conducted under the supervision of a faculty member. Prereq: permission of faculty supervisor and department chairperson. May be repeated for credit.
Equivalent(s): CS 696W
CS 696W - Independent Study
Individual projects developed and conducted under the supervision of a faculty member. Prereq: permission of faculty supervisor and department chairperson.
Attributes: Writing Intensive Course
Repeat Rule: May be repeated for a maximum of 8 credits. May be repeated up to 1 time.
Equivalent(s): CS 696
CS 699 - Internship
Provides the opportunity to apply academic experience in settings associated with future professional employment. A written proposal for the internship must be approved by the instructor. The proposal must specify what the student will learn from the internship, why the student is properly prepared for the internship and what supervision is available during the internship. A mid-semester report and final report are required. Prereq: permission. Only open to Computer Science majors. Cr/F.
Repeat Rule: May be repeated for a maximum of 4 credits. May be repeated up to 3 times.
Equivalent(s): CS 600
CS 712 - Compiler Design
Formal languages and formal techniques for syntax analysis and parsing; organization of the compiler and its data structures; code generation. LL and LR parsing; automatic generation of scanners and parsers from high level descriptions. Implementation of features from imperative and object-oriented languages. Students required to design and implement a compiler for a simple language. Prereq: CS 520.
CS 720 - Systems Programming
Study and simulation of various types of systems that include assemblers, linkers, memory management, concurrency and other resource management techniques. Prereq: CS 520.
Prerequisite(s): CS 610.
CS 723 - Performance Evaluation of Computer Systems
Introduces the main concepts, techniques, and tools needed to evaluate the performance of computer systems under various configurations and workloads. The techniques allow one to perform capacity planning based on quality of service requirements of users and workload characteristics. Course is mainly based on the use of analytic queuing network models of computers systems. The performance techniques are applied to study the performance of centralized, distributed, parallel, and client/server systems. The course also discusses performance measuring tools for operating systems such as Unix and Windows NT. Prereq: CS 620 and (MATH 539 or MATH 644).
CS 725 - Computer Networks
Introduction to fundamental concepts of computer networks and exploration of widely-used networking technologies. Topics include principles of congestion and error control; network routing; local, wireless and access networks; application protocol design; and network programming. In-depth discussion of the Internet suite of protocols. Prereq: CS 520.
Equivalent(s): IT 725
CS 727 - Computer Security
Introductory course in the mechanism and implementation of techniques in computer security. Various fundamental security topics include cryptography, passwords, access control, protocols, software vulnerabilities and malware detection. Prereq: CS 520.
CS 730 - Introduction to Artificial Intelligence
In-depth introduction to artificial intelligence, concentrating on aspects of intelligent problem-solving. Topics include situated agents, advanced search techniques, knowledge representation, logical reasoning techniques, reasoning under uncertainty, advanced planning and control, and learning. Prereq: CS 515.
CS 733 - Mobile Robotics
An introduction to the foundational theory and practices in mobile robotics. Topics include Kinematics of wheeled mobile robots, Sensors for mobile robots, Robot navigation and perception, Robot vision, Localization and mapping of mobile robots. Hands-on experience directed towards implementation with a real robot. Prereq: Programming course of Permission of instructor.
CS 735 - Introduction to Parallel and Distributed Programming
Programming with multiple processes and threads on distributed and parallel computer systems. Introduces programming tools and techniques for building applications on such platforms. Course requirements consist primarily of programming assignments. Prereq: CS 520.
Equivalent(s): CS 735W
CS 745 - Formal Specifications and Verification of Software Systems
Course focuses on the formal specification and verification of reactive systems, most notably concurrent and distributed systems. Topics relevant to these systems, such as non-determinism, safety and liveness properties, asynchronous communication or compositional reasoning, as discussed. We rely on a notation (TLA+, the Temporal Logic of Actions) and a support tool (TLC, the TLA+ Model Checker). Prereq: CS 520 and CS 659.
CS 750 - Machine Learning
An introduction to fundamental concepts and common methods in machine learning. In addition to theoretical topics, the course involves hands-on experience in making predictions using synthetic and real-world datasets. Prereq: MATH 539 or MATH 644, and Programming course or Permission of instructor.
CS 753 - Information Retrieval
Fundamental algorithms and techniques for text processing and text-based information retrieval systems. Topics include how to build an end-to-end information retrieval system, such as a Web search engine. Prereq: CS 515.
CS 757 - Mathematical Optimization for Applications
This course introduces the foundations of mathematical optimization and reinforces them via applications. The content includes convex optimization, first and second-order methods, constrained problems, duality, linear and quadratic programming, as well as discrete and non-convex optimization. Applications will focus on machine learning methods but also include problems from engineering and operations research. Prereq: MATH 426; Programming proficiency in MATLAB, R, Java, C, Python, or equivalent.
Equivalent(s): MATH 757
CS 758 - Algorithms
An introduction to important concepts in the design and analysis of algorithms and data structures, including implementation, complexity analysis, and proofs of correctness. Prereq: CS 515 and CS 659.
CS 760 - Introduction to Human-Computer Interaction
Human-computer interaction is a discipline concerned with the design, evaluation, and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. Prereq: CS 619.
Equivalent(s): CS 760W
CS 770 - Computer Graphics
Input-output and representation of pictures from hardware and software points of view; interactive techniques and their applications; three-dimensional image synthesis techniques and their applications. Prereq: CS 671.
Equivalent(s): CS 770W
CS 771 - Web Programming Paradigms
Equivalent(s): IT 771
CS 775 - Database Systems
Introduction to database management systems --- design, implementation, and usage --- with focus on the relational model. Data description, manipulation, and query language in the context of MySQL. Schema design and normalization; indexes, transaction processing. Web access of databases (PHP); overview of XML and noSQL systems. Prereq: CS 515.
Mutual Exclusion: No credit for students who have taken IT 775.
CS 780 - Topics
Material not normally covered in regular course offerings. May be repeated for credit.
CS 791 - Senior Project I
First semester of the capstone design experience. Modern software engineering practices and tools are surveyed and applied in team projects. Students begin development on software projects proposed by faculty or external sponsors, including initial stages of design, implementation, and documentation, with an interim presentation of progress expected toward the end of the semester. Principles of security, testability, and maintainability are stressed. Prerequisite: BS CS: CS 520, CS 619, 1 additional 600 level course; BA CS Algorithms & Systems Options: CS 520, CS 619, 1 additional 600 level course; BA CS Cybersecurity Option: CS 620 and (CS 727 or IT 666); BS ADS: DATA 674 or MATH 738 or CS 750.
CS 792 - Senior Project II
Continuation of CS 791: Senior Project I. Students complete the project by implementing their design. Students work in teams. Successful completion of this course fulfills the Capstone Experience requirement for Computer Science majors. Prereq: CS 791. Writing intensive.
Attributes: Writing Intensive Course
CS 799 - Thesis
Students work under the direction of a faculty sponsor to plan and carry out independent research resulting in a written thesis. Required for honors-in-major. Prereq: CS 520, CS 619, CS 600 level course, GPA >3.4, permission. A minimum of 4.0 credits is required for the completion of the course.
Attributes: Writing Intensive Course
Repeat Rule: May be repeated for a maximum of 8 credits.