41 courses with the subject CS, each shown exactly as we captured it from the college's catalog, with every element we hold. Where the wording looks broken, that is our reading of the catalog, not the college's text.
CS 1004Introduction to Programming for Non-Majors1/3
This course introduces students to the fundamental principles of programming in imperative and scripting languages. Topics include control structures, iterators, functional decomposition, and basic data structures (such as records). Students will be expected to implement, test, and debug programs. Through the use of compelling applications and lab exercises, students will learn how to interface with external data systems and control devices.
This course introduces students to the fundamental principles of programming as it applies to engineering and robotic applications. Topics include data structures, control flow, modularization, state machines, and event-based input/output. Students will be expected to implement, test, and debug programs and apply them to control devices and microcontrollers. Special focus will be given to writing efficient and reusable code. This course provides appropriate programming background for RBE 1001.
CS 1102Accelerated Introduction to Program Design1/3
In the first half of the term, this course covers the same functional programming material as CS 1101 at roughly twice the pace. The second half of the term is a preview of selected advanced Computer Science topics, such as the design and implementation of application-specific languages, macros, programming with the HTTP protocol, and continuation-passing style. Students will be expected to complete an open-ended individual programming project.
This course introduces students to an object-oriented model of programming. Building from the design methodology covered in CS 1101/CS 1102, this course shows how programs can be decomposed into classes and objects. By emphasizing design, this course shows how to implement small defect-free programs and evaluate design decisions to select an optimal design under specific assumptions. Topics include inheritance, exceptions, interface, design by contract, basic design patterns, and reuse. Students will be expected to design, implement, and debug object-oriented programs composed of multiple classes and over a variety of data structures.
This course covers the data structures and general program-design material from CS2102, but assumes that students have significant prior experience in object-oriented programming. The course covers object-oriented design principles and data structures more deeply and at a faster pace than in CS 2102. Students will be expected to design, implement, test, debug, and critique programs both for correctness and adherence to good object-oriented design principles. The course is designed to strengthen both the design skills and algorithmic thinking of students who already have a foundation in object-oriented programming. Advanced Placement Computer Science A courses should provide sufficient background; students from AP CS Principles courses or gentler introductions to Java Programming are advised to take CS2102 instead. Students may receive credit for only one of the following three courses: CS 2102, CS 2103, CS 210X.
CS 2119Application Building with Object-Oriented Concepts1/3
This course introduces students to an object-oriented model of programming, with an emphasis on the programming approaches useful in creating software applications. Students will be expected to design, implement, and debug object-oriented programs. Topics include inheritance, user interfaces, and database access. This course is for non-CS majors with prior programming experience and an interest in building software applications.
Building on a fundamental knowledge of data structures, data abstraction techniques, and mathematical tools, a number of examples of algorithm design and analysis — worst case and average case — will be developed. Topics include greedy algorithms, divide-and-conquer, dynamic programming, heuristics, and probabilistic algorithms. Problems will be drawn from areas such as sorting, graph theory, and string processing. The influence of the computational model on algorithm design will be discussed. Students will be expected to perform analysis on a variety of algorithms.
This course introduces the C programming language and system programming concepts to non-CS majors who need to program computers in their own fields. The course assumes that students have had previous programming experience. It quickly introduces the major concepts of the C language and covers manual memory management, pointers and basic data structures, the machine stack, and input/output mechanisms. Students will be expected to design, implement, and debug programs in C. All Computer Science students and other students wishing to prepare for upper-level courses in Computer Science should take CS 2303 instead of CS 2301. Students who have credit for CS 2303 may not receive subsequent credit for CS 2301.
This course provides the student with an understanding of the basic components of a general-purpose operating system. Topics include processes, process management, synchronization, input/output devices and their programming, interrupts, memory management, resource allocation, and an introduction to file systems. Students will be expected to design and implement a large piece of system software in the C programming language. Undergraduate credit may not be earned both for this course and for CS 502.
This course develops in the student an understanding of the nature and importance of problems concerning the efficiency and effectiveness of human interaction with computer-based systems. Topics include the design and evaluation of interactive computer systems, basic psychological considerations of interaction, interactive language design, interactive hardware design, and special input/output techniques. Students will be expected to complete several projects. A project might be a software evaluation, interface development, or an experiment.
This course provides students with an introduction to security, covering both technical and social aspects. Through a series of exercises and case studies, students will develop an understanding of security that will serve as the foundation for 4K-level security-focused courses. Topics may include foundational security concepts (e.g., access control), common attacks (e.g., social engineering) and defenses, case studies of large-scale attacks and failures (e.g., Heartbleed), and security processes (e.g., software testing and vulnerability disclosure).
This course introduces the student to the design, use, and application of database management systems. Topics include the relational data model, relational query languages, design theory, and conceptual data design and modeling for relational database design. Techniques that provide for data independence and minimal redundancy will be discussed. Students will be expected to design and implement database system applications. Undergraduate credit may not be earned for both this course and CS 542.
This course provides a broad view of computer networks. The course exposes students to all seven layers of OSI Reference Model while providing an introduction into newer topics such as wireless networking and Internet traffic concerns. The objective is to focus on an understanding of fundamental concepts of modern computer network architecture from a design and performance perspective. Topics covered include physical layer considerations, network protocols, wide area networks, local area networks, wireless networks, switches and routing, congestion, Internet traffic, and network security. Students will be expected to do extensive systems/network programming and will be expected to make use of simulation and measurement tools to gain an appreciation of current network design and performance issues. This course is also highly recommended for RBE and IMGD majors.
Electrical and Computer Engineering (Minimum 1/3 Units) Students must complete 1/3 unit of Electrical and Computer Engineering (ECE) courses selected from the following list: Electrical and Computer Engineering Courses Item # Title Units
Instances of this course will explore advanced and emerging topics that are not covered by the current regular CS offerings. Content and format will vary to suit the interests and needs of the faculty and students. This course may be repeated for credit as topics change.
Building on the preliminaries established in CS 3133, this course explores fundamental questions of computability and complexity. Emphasis is on both mathematical foundations and applications to computing practice. Topics include the Church-Turing thesis, the halting problem, NP-completeness, time and space complexity classes, and related material as determined by the instructor. Students will be expected to read and write mathematical proofs.
In addition to these courses, any of the following graduate courses (when used as stated above) can be used to satisfy the undergraduate Design area requirement: CS 509, CS 542, CS 546, CS 561, or CS 562. Social Implications of Computing Item # Title Units CS 3043/SS 3043 Social Implications of Information Processing 1/3 GOV 2314/ID 2314 Cyberlaw and Policy 1/3
This course introduces students to the principles and practice of software and systems security. Students will study common classes of software vulnerabilities, and the techniques attackers use to exploit them, including memory corruption, privilege escalation, and logic flaws, as well as defenses designed to prevent or mitigate such attacks. The course emphasizes challenges that task students with analyzing and exploiting real software binaries.
This course focuses on reverse engineering software and computing systems in the context of cybersecurity. Students will learn how to analyze compiled programs, binaries, and system components to understand their structure, functionality, and potential vulnerabilities. Topics include disassembly, decompilation, debugging, and dynamic analysis, as well as techniques for reconstructing program logic and uncovering hidden or malicious functionality. The course highlights applications such as malware analysis, vulnerability discovery, and security auditing, while also addressing the ethical and legal considerations of reverse engineering. Hands-on labs and projects provide students with practical experience.
This course focuses on securing web applications and the technologies that support them. Students will study common application-layer vulnerabilities such as SQL injection, cross-site scripting (XSS), cross-site request forgery (CSRF), broken authentication, insecure session management, and privilege escalation, along with corresponding defenses including secure coding practices, input validation, proper authentication, session management, and access control. The course emphasizes understanding web application architectures, frameworks, and protocols, rather than lower-level network security. Hands-on labs using virtual machines, containers, and cloud environments provide practical experience in penetration testing and securing real-world web applications.
CS 4404Tools and Techniques in Computer Network Security 1/3
CS 4801/ECE 4802 Introduction to Cryptography and Communication Security 1/3 Societal Impacts of Security (Minimum 1/3 Units) In addition to the courses listed below, other Cyber Security-related societal impacts courses may be used to satisfy this requirement subject to program approval. Item # Title Units CS 3043/SS 3043 Social Implications of Information Processing 1/3 GOV 2314/ID 2314 Cyberlaw and Policy 1/3 Additional Cyber Security Courses (Minimum 3/3 Units) In addition to the courses listed below, other Cyber-Security-Related courses may be used to satisfy this requirement subject to program approval. Item # Title Units
This course provides a comprehensive introduction to the principles and techniques of digital forensics. Topics include an overview of legal frameworks and formal procedures that guide digital forensic investigations, digital evidence collection and data recovery, forensic analysis across different operating systems and file systems, data hiding, and mobile forensics. Students will gain practical experience with forensic tools through a sequence of hands-on labs.
This course concentrates on the study of the internals of database management systems. Topics include principles and theories of physical storage management, advanced query languages, query processing and optimization, index structures for relational databases, transaction processing, concurrency control, distributed databases, and database recovery, security, client server and transaction processing systems. Students may be expected to design and implement software components that make up modern database systems. Undergraduate credit may not be earned both for this course and CS 542. This course will be offered in academic years ending in even numbers.
CS 4445Data Mining and Knowledge Discovery in Databases1/3
This course provides an introduction to Knowledge Discovery in Databases (KDD) and Data Mining. KDD deals with data integration techniques and with the discovery, interpretation, and visualization of patterns in large collections of data. Topics covered in this course include data warehousing and mediation techniques; data mining methods such as rule-based learning, decision trees, association rules, and sequence mining; and data visualization. The work discussed originates in the fields of artificial intelligence, machine learning, statistical data analysis, data visualization, databases, and information retrieval. Several scientific and industrial applications of KDD will be studied. This course will be offered in academic years ending in even numbers.
This course extends the study of the design and implementation of operating systems begun in CS 3013 to distributed and advanced computer systems. Topics include principles and theories of resource allocation, file systems, protection schemes, and performance evaluation as they relate to distributed and advanced computer systems. Students may be expected to design and implement programs that emphasize the concepts of file systems and distributed computing systems using current tools and languages. Undergraduate credit may not be earned both for this course and for CS 502. This course will be offered in academic years ending in even numbers.
This course explores the architectural design of modern computer systems in terms of instruction sets and the organization of processors, controllers, memories, devices, and communication links. Topics include an overview of computer architectures and system components, theoretical foundations, instruction-level and thread-level pipelining, multifunction pipelines, multi-core systems, caching and memory hierarchies, and multi-core and parallel computer organization. Students may be expected to design and implement programs that simulate significant components of modern computer architectures. This course will be offered in academic years ending in odd numbers.
This course provides an in-depth look into computer networks. While repeating some of the areas from CS 3516, the goal is to go deeper into computer networks topics. This in-depth treatment in topics such as routing, congestion control, wireless layer protocols, and physical signaling considerations will require the use of basic queuing theory and probability to provide a more formal treatment of computer networks performance. Other topics covered include LAN and WLAN technologies, mobile wireless networks, sensor networks, optical networks, network security, intrusion detection, and network management. Students will be expected to do more sophisticated network programming than seen in CS 3516 and will conduct laboratory activities involving measuring the performance of modern networking applications running on both wired networks and infrastructure wireless networks. Undergraduate credit may not be earned both for this course and for CS 513. This course will be offered in academic years ending in even numbers.
The goal of this course is to acquaint students with fundamental concepts and state-of-the-art computer science literature in mobile and ubiquitous computing. Topics to be covered include mobile systems issues, human activity and emotion sensing, location sensing, mobile human-computer interaction, mobile social networking, mobile health, power saving techniques, energy and mobile performance measurement studies, and mobile security. The course will introduce the programming of mobile devices such as smartphones running the Android operating system. Students may not earn credit for both CS 403X and CS 4518.
CS 4533Techniques of Programming Language Translation1/3
This course studies the compiling process for high-level languages. Topics include lexical analysis, syntax analysis, semantic analysis, symbol tables, intermediate languages, optimization, code generation, and run-time systems. Students will be expected to use compiler tools to implement the front end — and to write a program to implement the back end — of a compiler for a recursive programming language. Undergraduate credit may not be earned for both this course and for CS 544. This course will be offered in academic years ending in odd numbers.
This course covers the design and implementation of programming languages. Topics include data structures for representing programming languages, implementing control structures (such as functions, recursion, and exceptions), garbage collection, and type systems. Students will be expected to implement several small languages using a functional programming language. Undergraduate credit may not be earned for both this course and CS 536. This course will be offered in academic years ending in even numbers.
This course studies the use of the computer to model and graphically render two- and three-dimensional structures. Topics include graphics devices and languages, 2- and 3-D object representations, and various aspects of rendering realistic images. Students will be expected to implement programs which span all stages of the 3-D graphics pipeline, including clipping, projection, arbitrary viewing, hidden surface removal, and shading. Undergraduate credit may not be earned both for this course and for CS 543.
This course provides an in-depth examination of the algorithms, data structures, and techniques used in modeling and rendering dynamic scenes. Topics include animation hardware and software; parametric blending techniques; modeling physical and articulated objects; forward and inverse kinematics; key-frame, procedural, and behavioral animation; and free-form deformation. Students will be expected to develop programs to implement low-level animation algorithms as well as use commercial animation tools to design and produce small- to moderately-sized animations. This course will be offered in academic years ending in odd numbers.
This course trains students in data visualization, the graphical communication of data and information for presentation, confirmation, and exploration. Students learn the stages of the visualization pipeline, including data characterization, mapping data attributes to graphical attributes, user task abstraction, visual display techniques, tools, paradigms, and perceptual issues. Students evaluate the effectiveness of visualizations for specific data, task, and user types. Students implement visualization algorithms and undertake projects involving the use of commercial and public-domain visualization tools.