To view course descriptions scroll down to the desired entry. You may also view Mathematics and Statistics course listings.
CS 140 Introduction to Computer Programming An introduction to programming using a high-level language. Assumes no prior knowledge of programming, and focuses on essential skills. Students learn to create programs ranging from practical utilities to simple games. Fulfills the distribution requirement in quantitative literacy (QLR). Offered every semester.
CS 219 Techniques of Computer Science An in-depth look at computing and programming in a high-level language. Introduces more advanced programming problems and more principled programming techniques. Prerequisite: Computer Science 140 or the equivalent. Fulfills the distribution requirement in quantitative literacy (QLR). Offered every semester.
CS 220 Computer Organization An in-depth look at the underlying organization and architecture of modern computer systems. Topics include data representation, the organization of CPUs including caches and the memory hierarchy, digital circuits, machine language, and an introduction to C and assembly language programming. Prerequisite: Computer Science 219. Offered in spring semester.
CS 250 Computer Science Seminar Explores topics of interest beyond the core Computer Science curriculum. The course is worth 0.25 credit, meets once per week, and is graded pass/fail. As topics vary from one offering to the next, it is possible for students to repeat the course for credit. Prerequisite: Computer Science 219. Offered as scheduling allows.
CS 256 Data Structures An overview of the essential strategies for the organization, retrieval and processing of data. Topics include arrays, lists, stacks, queues, maps, and trees, as well as an introduction to algorithm analysis. Prerequisite: Computer Science 219. Offered in fall semester.
CS 302 Symbolic Logic A study of elementary symbolic logic. Topics include sentential and predicate logic. Prerequisite: Math 280 or Computer Science 220 or Philosophy 202. Offered every other year. Also offered as Philosophy 302 and Mathematics 302.
CS 318 Graph Theory Graph theory deals with the study of a finite set of points connected by lines. Problems in such diverse areas as transportation networks, social networks and chemical bonds can be formulated and solved by the use of graph theory. The course includes theory, algorithms, applications and history. Prerequisite: Mathematics 217 or 280. Offered every other year. Also offered as Mathematics 318.
CS 321 Computer Networking An overview of computer networking and the technologies behind the internet. Topics include protocols at the application level (HTTP, DNS, FTP, BitTorrent, etc.), transport level (TCP/UDP), and network level (IP/ATM), as well as issues related to network security. Prerequisite: Computer Science 256. Offered as scheduling allows.
CS 332 Web Programming Introduces the concepts and languages of modern web programming. Topics include HTML/CSS, client-side and server-side scripting, and interaction with a database. Prerequisite: Computer Science 256. Offered as scheduling allows.
CS 340 Software Engineering Examines the challenge of creating reliable, maintainable software in teams. Introduces modern tools and strategies for design, version control, testing, debugging, and documentation. Prerequisite: Computer Science 256. Offered as scheduling allows.
CS 345 Database Systems A look at how data is logically organized, physically stored on a digital device, and queried. Focuses primarily on relational database systems and structured queries. Other topics include non-relational data models, privacy, security, performance, and reliability. Prerequisite: Computer Science 256. Offered as scheduling allows.
CS 362 Algorithm Analysis An investigation of core techniques for designing and analyzing algorithms for computational problem-solving. Introduces well-known algorithms for common types of problems, and teaches students to evaluate algorithm efficiency. Prerequisites: Computer Science 256 and Mathematics 280. Offered in fall semester.
CS 364 Programming Languages Addresses several advanced topics in programming: the process of code interpretation, the principles behind the design of programming languages, and the paradigms of functional and concurrent programming. Prerequisite: Computer Science 220 or 256. Offered in spring semester.
CS 370 Operating Systems An overview of operating system principles. Topics include process scheduling and synchronization, memory management including virtual memory, file system interfaces and implementations, and design considerations for desktop/mobile platforms. Prerequisites: Computer Science 220 and 256. Offered as scheduling allows.
CS 374 Artificial Intelligence A programming-intensive introduction to the concepts and uses of artificial intelligence. Teaches students to approach complex, messy problems with strategies like heuristic search, genetic algorithms, and machine learning, and explores the simulation of human abilities in areas like natural language processing. Prerequisite: Computer Science 256. Offered as scheduling allows.
CS 380 Theory of Computation Addresses the theoretical basis of computer science. Introduces a hierarchy of computational models and the types of problems they can and cannot solve, as well as a set of problem complexity classes and their relationships. Prerequisite: Mathematics 280. Offered in spring semester. Also offered as Mathematics 380.
CS 389 Independent Project Permission required.
CS 489 SYE: Senior Project Permission required
CS 498 SYE: Senior Honors Project Permission required.