CS 1030: Foundations of Computer Science (formerly CS 1400)

Fa10 | Sp11 | Fa11 | Sp12 | Su12 | Fa12 | Sp13 | Fa13 | Sp14 | Fa16 | Fa18 | Sp23

Gentle introduction to the fundamental concepts of computer science. In particular, students learn problem-solving skills and apply them by writing programs in a visual and fun programming environment that is friendly to beginners. Students also study, simulate, and visualize the inner workings of a simple computer.

CS 1050: Computers in Society (retired course)

Sp08

Social issues that surround the increasingly pervasive roles that computers play in society.

CS 1060: Explorations in Computer Science (retired course)

Fa08 | Sp09 | Fa09

Introduction to the scientific principles and engineering strategies that are the basis of computing and shows how they make possible such disparate technologies as web search engines, computer-animated movies, computer games, digital music, and artificial intelligence.

CS 1410: Introduction to Object-Oriented Programming

Fa13 | Sp14 | Fa15 | Sp16 | Fa16 | Fa17 | Fa22

This course builds on the programming skills learned in CS 1400, while introducing the paradigm of object-oriented programming.

CS 2000: Introduction to Programming in C (retired course)

Fa05 | Fa06 | Fa07

Introduction to essential programming concepts using C, including the decomposition of programs into functional units, control structures, recursion, and dynamic memory management.

CS 2100: Discrete Structures

Sp17 | Fa18 | Fa19 | Fa21

Introduction to propositional logic, predicate logic, formal logical arguments, finite sets, functions, relations, inductive proofs, recurrence relations, graphs, and their applications to Computer Science.

CS 2420: Introduction to Data Structures and Algorithms

Su06 | Su07 | Su08 | Sp10 | Sp11 | Sp12 | Fa15 | Sp18 | Sp19 | Sp20 | Fa20 | Sp21 | Sp22

Introduction to the problem of engineering computational efficiency into programs. Classical algorithms and data structures. Analysis of program space and time requirements.

CS 3020: Research Forum

Fa09 | Fa10 | Fa11 | Fa12 | Fa13

Seminar about the kinds of problems that remain unsolved in computer science and the research conducted by professors in the School of Computing.

CS 3500: Software Practice

Sp06

Practical exposure to the process of creating large software systems, including requirements specifications, design, implementation, testing, and maintenance. Emphasis on software process, software tools, software engineering techniques, and team development practice.

CS 3810: Computer Organization

Sp16 | Fa17

In-depth study of computer architecture and design. Topics include RISC and CISC instruction set architectures, CPU organizations, pipelining, and memory systems.

CS 4000: Senior Capstone Project - Design Phase

Fa12

First semester of the Senior Capstone Project. Seniors work on team formation, project identification, project planning, and completion of a system prototype.

CS 4011: Professional Development

Sp23

This course prepares students for the process of entering the software developer job market.

CS 4400: Computer Systems

Fa07 | Fa08 | Fa09 | Fa10 | Fa11 | Fa19

Computer systems from a programmer’s point of view, including machine level representations of programs, measuring and optimizing program performance, memory hierarchy and virtual memory, linking, and exceptional control flow.

CS 4470: Compiler Principles and Techniques (formerly CS 5470)

Sp05 | Sp06 | Sp07 | Sp08 | Sp09 | Sp10 | Sp18 | Sp19

Ideas behind the compilation of programs, including lexical an\ alysis, parsing, symbol tables, runtime environments, and code generation.

CS 4500: Senior Capstone Project

Sp13

Second semester of the Senior Capstone Project. Seniors develop significant software systems in small teams, with emphasis on applying sound, disciplined software engineering practice.

CS 5040: Teaching Introductory Computer Science

Fa15 | Fa16 | Fa17 | Fa18 | Fa19 | Fa20 | Fa21

Issues confronted by teaching assistants (TAs) of introductory computer science courses, including leading lab sections, conducting office hours, grading assignments, and communicating with students.

CS 6961: Teaching Computer Science in Higher Education

Fa21 | Fa22

Special topics course for preparing students to teach basic computer science concepts at a university level, with a focus on how to effectively teach undergraduates.

CS 7940-002: Computer Science Education Seminar

Fa18 | Fa19 | Fa20 | Fa21

A weekly meeting in which attendees read and discuss one or more papers / articles chosen from a CS education conference or publication.