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

Credits: 2

Introduces students to the available computing-related majors and a variety of topics foundational to success in computing-related fields. Coverage includes ethics, skills, and knowledge applicable to a broad range of computing disciplines.

Grade Mode: Letter Grading

CS #401 - Computers and Their Applications

Credits: 4

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.

Attributes: Environment,TechSociety(Disc)

Equivalent(s): CIE 530, CS 401H, CS 495, DCE 491, DCE 492, INCO 495

Grade Mode: Letter Grading

CS 405 - Introduction to Applications Programming

Credits: 4

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.

Grade Mode: Letter Grading

CS 408 - Living in a Networked World: The Good, the Bad, and the Ugly

Credits: 4

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.

Attributes: Environment,TechSociety(Disc)

Grade Mode: Letter Grading

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 410P, CS 415

Mutual Exclusion: No credit for students who have taken .

Grade Mode: Letter Grading

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 410C, CS 415

Grade Mode: Letter Grading

CS 414 - From Problems to Algorithms to Programs

Credits: 4

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)

Grade Mode: Letter Grading

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.

Equivalent(s): CS 410C, CS 410P

Mutual Exclusion: No credit for students who have taken .

Grade Mode: Letter Grading

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.

Prerequisite(s): CS 410C with a minimum grade of D- or CS 410P with a minimum grade of D- or CS 415 with a minimum grade of D-.

Equivalent(s): CS 417

Grade Mode: Letter Grading

CS 417 - From Programs to Computer Science

Credits: 0 or 4

Programming techniques for students with programming experience from an introductory programming course. 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.

Prerequisite(s): CS 410P with a minimum grade of C- or CS 410C with a minimum grade of C- or CS 415 with a minimum grade of C-.

Equivalent(s): CS 416

Grade Mode: Letter Grading

CS 419 - Computer Science for Engineers and Scientists

Credits: 4

This course provides an accelerated coverage of programming techniques for students with programming experience from an introductory programming course. Topics covered 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; and recursion. Students will learn basic algorithm analysis. Numerous labs and programming assignments will build skills in planning, problem solving, and debugging: this is a hands-on course.

Prerequisite(s): CS 410C with a minimum grade of D-.

Equivalent(s): CS 416, CS 417

Grade Mode: Letter Grading

CS 420 - Foundations of Programming for Digital Systems

Credits: 0 or 4

A systems-oriented introduction to C, with an emphasis on low-level operations, memory management, and debugging. Foundational digital systems concepts and methods will be introduced, including Boolean algebra, basic logic gates, number systems & conversions, integer representation, and theoretical aspects of combinational and sequential logic. Aspects of effective programming such as incremental development, appropriate structure and commenting, and basic testing will be stressed.

Prerequisite(s): CS 410C with a minimum grade of C- or CS 410P with a minimum grade of C- or CS 414 with a minimum grade of C- or CS 415 with a minimum grade of C-.

Grade Mode: Letter Grading

CS 457 - Introduction to Data Science and Analytics

Credits: 4

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.

Attributes: Environment,TechSociety(Disc)

Equivalent(s): DATA 557

Grade Mode: Letter Grading

CS 501 - Professional Ethics and Communication in Technology-related Fields

Credits: 4

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.

Attributes: Environment,TechSociety(Disc); Inquiry (Discovery)

Prerequisite(s): ENGL 401 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 515 - Data Structures and Introduction to Algorithms

Credits: 0 or 4

Reviews basic data structures. Covers the mechanics and relative efficiencies of advanced data structures. Students will implement several data structures such as AVL trees, heaps, hash tables, and adjacency lists. Discusses abstract data types such as maps, priority queues, and graphs. Introduction to algorithm analysis, sorting algorithms, and graph algorithms.

Prerequisite(s): CS 416 with a minimum grade of C- or CS 417 with a minimum grade of C-.

Grade Mode: Letter Grading

CS 518 - Introduction to Software Engineering

Credits: 0 or 4

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.

Prerequisite(s): CS 416 with a minimum grade of D- or CS 417 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 520 - Computer Organization and System-Level Programming

Credits: 0 or 4

Study software/hardware interaction, understand data and program representation. Topics include fundamentals of computer organization, CPU, memory, registers, addressing modes, instruction sets, assemblers, linkers, concurrency, memory hierarchy and memory management.

Prerequisite(s): (CS 416 with a minimum grade of C- or CS 417 with a minimum grade of C-) and CS 420 with a minimum grade of C-.

Grade Mode: Letter Grading

CS 527 - Fundamentals of Cybersecurity

Credits: 4

An entry-level introduction to a wide range of fundamental cybersecurity topics: authentication, authorization, auditing, cryptography, human element, network security, OS security, mobile & IoT security. The emphasis is to explain basic concepts with real world examples.

Prerequisite(s): CS 416 with a minimum grade of D- or CS 417 with a minimum grade of D-.

Grade Mode: Letter Grading

CS #580 - Introduction to Topics in Computing

Credits: 1-2

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.

Grade Mode: Credit/Fail Grading

CS 619 - Introduction to Object-Oriented Design and Development

Credits: 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.

Prerequisite(s): CS 515 with a minimum grade of C- and CS 518 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 620 - Operating System Fundamentals

Credits: 4

Introduces operating system concepts and design. Process and memory management; scheduling; file systems; storage devices; inter-process communication.

Prerequisite(s): CS 520 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 659 - Introduction to the Theory of Computation

Credits: 4

Review of sets, relations, and languages. Induction and diagonalization. Finite automata, context-free languages, pushdown automata. Basic complexity theory.

Prerequisite(s): MATH 531 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 696 - Independent Study

Credits: 1-6

Individual projects developed and conducted under the supervision of a faculty member.

Repeat Rule: May be repeated up to unlimited times.

Equivalent(s): CS 696W

Grade Mode: Letter Grading

CS 696W - Independent Study

Credits: 1-6

Individual projects developed and conducted under the supervision of a faculty member.

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

Grade Mode: Letter Grading

CS 699 - Internship

Credits: 1

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.

Repeat Rule: May be repeated for a maximum of 4 credits. May be repeated up to 3 times.

Grade Mode: Credit/Fail Grading

CS 712 - Compiler Design

Credits: 4

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.

Prerequisite(s): CS 520 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 720 - Systems Programming

Credits: 4

Study and simulation of various types of systems that include assemblers, linkers, memory management, concurrency and other resource management techniques.

Prerequisite(s): CS 520 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 722 - Cloud Computing Systems

Credits: 4

The course covers a variety of topics in cloud computing systems, or more precisely, distributed systems that enable modern cloud computing. The topics include virtualization and its impact on configuration management. The course also covers the latest advancements in cloud computing/systems, IoT, edge, and fog computing.

Prerequisite(s): CS 620 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 723 - Performance Evaluation of Computer Systems

Credits: 4

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.

Prerequisite(s): CS 620 with a minimum grade of D- and (MATH 539 with a minimum grade of D- or MATH 644 with a minimum grade of D-).

Grade Mode: Letter Grading

CS 725 - Computer Networks

Credits: 4

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.

Prerequisite(s): CS 520 with a minimum grade of D-.

Equivalent(s): IT 725

Grade Mode: Letter Grading

CS 727 - Software Security

Credits: 4

Mechanisms and implementation of techniques in software security. Various fundamental security topics include cryptography, access control, protocols, software vulnerabilities, and reverse engineering.

Prerequisite(s): CS 520 with a minimum grade of C- and CS 527 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 730 - Introduction to Artificial Intelligence

Credits: 4

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.

Prerequisite(s): CS 515 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 733 - Mobile Robotics

Credits: 4

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. Programming course required prior to taking this course.

Grade Mode: Letter Grading

CS 735 - Introduction to Parallel and Distributed Programming

Credits: 4

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.

Prerequisite(s): CS 761 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 745 - Formal Specifications and Verification of Software Systems

Credits: 4

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).

Prerequisite(s): CS 520 with a minimum grade of D- and CS 659 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 750 - Machine Learning

Credits: 4

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. Programming course required prior to taking this course.

Prerequisite(s): MATH 539 with a minimum grade of D- or MATH 644 with a minimum grade of D-.

Mutual Exclusion: No credit for students who have taken .

Grade Mode: Letter Grading

CS 751 - Reinforcement Learning

Credits: 4

Reinforcement learning studies how agents can learn to act to achieve goals in complex, stochastic environments. This course introduces students to fundamental theoretical concepts of reinforcement learning, standard algorithms, and practical techniques. In addition to theoretical topics, the course involves implementing basic algorithms in a high-level programming language.

Prerequisite(s): (CS 415 with a minimum grade of D- or CS 410P with a minimum grade of D-) and (MATH 539 with a minimum grade of D- or MATH 644 with a minimum grade of D-).

Grade Mode: Letter Grading

CS 752 - Foundations of Neural Networks

Credits: 4

Neural networks are a class of machine learning models which have recently revolutionized many applied machine learning domains such as natural language understanding, image/video processing, bioinformatics, time series analysis. This course teaches students to develop new neural network architectures from scratch and customize them. The course covers all necessary foundations of neural networks including gradient descent optimization and vector calculus. Students will learn how to design models using idioms such as observed variables, latent variables, gate variables and different functions as well as a wide range of state-of-the-art architectures as design examples.

Prerequisite(s): CS 515 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 753 - Information Retrieval

Credits: 4

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.

Prerequisite(s): CS 515 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 755 - Computer Vision

Credits: 4

Studying techniques that make a machine 'see' and 'understand' the world in a human-like fashion. The course discusses the theory behind common computer vision techniques and trains students on designing their own algorithms for understanding image or video.

Prerequisite(s): MATH 539 with a minimum grade of D- or MATH 644 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 757 - Mathematical Optimization for Applications

Credits: 4

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. Programming proficiency in MATLAB, R, Java, C, Python, or equivalent required.

Prerequisite(s): MATH 426 with a minimum grade of D-.

Equivalent(s): MATH 757

Grade Mode: Letter Grading

CS 758 - Algorithms

Credits: 4

An introduction to important concepts in the design and analysis of algorithms and data structures, including implementation, complexity analysis, and proofs of correctness.

Prerequisite(s): CS 420 with a minimum grade of C- and CS 515 with a minimum grade of C- and CS 659 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 759 - Natural Language Processing

Credits: 4

This class covers natural language processing, including both methods and well-known applications. Methods discussed will range from classical probabilistic methods such as Naive Bayes and Hidden Markov Models, to contemporary neural network methods, including word vector models, recurrent neural networks, and Transformer-based models. Applications discussed will include text classification, machine translation, and conversation systems.

Prerequisite(s): CS 515 with a minimum grade of D- and (MATH 539 with a minimum grade of D- or MATH 644 with a minimum grade of D-).

Grade Mode: Letter Grading

CS 761 - Programming Language Concepts and Features

Credits: 4

Explores the main features of modern, high-level, general-purpose programming languages from the user (programmer) standpoint. Students learn how specific features of programming languages can be used effectively in solving programming problems. The course is also an opportunity to use paradigms that expand on simple imperative programming, such as object-oriented, functional and concurrent programming. Some knowledge of Java required.

Prerequisite(s): CS 520 with a minimum grade of C-.

Equivalent(s): CS 671

Grade Mode: Letter Grading

CS 770 - Computer Graphics

Credits: 4

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.

Prerequisite(s): CS 515 with a minimum grade of C- and CS 520 with a minimum grade of C-.

Grade Mode: Letter Grading

CS #771 - Web Programming Paradigms

Credits: 4

In this course you will learn languages to program the Web. Languages integrated into browsers, like JavaScript, and languages invoked on the server, like Ruby. You will also learn about frameworks, like Rails, and various techniques used to support the programming process. In addition, you will learn languages you will need to create, modify, and process Web documents. Although we will learn how to read and write in these languages, our primary goal will be an understanding of how the design of these multi-paradigm dynamic languages support the process of developing Web applications.

Prerequisite(s): CS 761 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 775 - Database Systems

Credits: 4

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.

Prerequisite(s): CS 515 with a minimum grade of D-.

Mutual Exclusion: No credit for students who have taken IT 775.

Grade Mode: Letter Grading

CS 780 - Topics

Credits: 1-4

Material not normally covered in regular course offerings. May be repeated for credit.

Grade Mode: Letter Grading

CS 781 - Data Science for Knowledge Graphs and Text

Credits: 4

This course covers advanced text processing and machine learning algorithms and techniques for data science with knowledge graph and text data. This includes a wide range of algorithms for neural networks, machine learning, graph processing, text processing, and information retrieval with a focus of gaining insights into the knowledge stored in data. This an implementation-intensive research-oriented seminar, where a particular data science application will be developed by reading research publication and implementing a software prototype.

Prerequisite(s): CS 752 with a minimum grade of B- or CS 753 with a minimum grade of B- or CS 759 with a minimum grade of B-.

Grade Mode: Letter Grading

CS 791 - Senior Project I

Credits: 2

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(s): CS 520 with a minimum grade of C- and ((CS 619 with a minimum grade of D- and CS 620 with a minimum grade of D-) or (CS 620 with a minimum grade of D- and (CS 727 with a minimum grade of D- or IT 666 with a minimum grade of D-)) ).

Grade Mode: Letter Grading

CS 792 - Senior Project II

Credits: 2

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.

Attributes: Writing Intensive Course

Prerequisite(s): CS 791 with a minimum grade of D-.

Grade Mode: Letter Grading

CS 799 - Thesis

Credits: 1-5

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. Additional CS 600-level course required. Minimum GPA should be 3.4 or higher.

Attributes: Writing Intensive Course

Prerequisite(s): CS 520 with a minimum grade of C- and CS 619 with a minimum grade of D-.

Repeat Rule: May be repeated for a maximum of 8 credits.

Grade Mode: Letter Grading