Computer Science Course Listings
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.
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: CS 140 or the equivalent.
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, machine language, and an introduction to assembly language programming. Prerequisite: CS 219. Offered in spring semesters.
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: may vary. Offered as scheduling allows.
256. Data Structures.
An in-depth look at 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: CS 219.
302. Symbolic Logic.
A study of elementary symbolic logic. Topics include sentential and predicate logic. Prerequisite: MATH 280 or CS 220 or PHIL 202. Offered as scheduling allows. Also offered as PHIL 302 and MATH 302.
318. 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. Topics include theory, algorithms, applications, and history. Prerequisite: MATH 217 or MATH 280. Offered as scheduling allows. Also offered as MATH 318.
321. Computer Networking.
An overview of computer networking and the technologies behind the internet. Topics include protocols at the application level (HTTP, DNS, etc.), transport level (TCP/UDP), and network level (IP), as well as issues related to network security. Prerequisite: CS 256, with CS 220 strongly recommended. Offered as scheduling allows.
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: CS 256, with CS 220 strongly recommended. Offered as scheduling allows.
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: CS 256, with CS 220 strongly recommended. Offered as scheduling allows.
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: CS 256, with CS 220 strongly recommended. Offered in fall semesters.
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: MATH 280 and CS 256, with CS 220 strongly recommended. Offered in fall semesters.
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: CS 256, with CS 220 strongly recommended. Offered as scheduling allows.
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. Prerequisite: CS 256, with CS 220 strongly recommended. Offered as scheduling allows.
374. Artificial Intelligence.
A programming-intensive introduction to the concepts and uses of artificial intelligence. Teaches students to implement agents for problem-solving, game-playing, and decision-making. Prerequisite: CS 256, with CS 220 strongly recommended. Offered as scheduling allows.
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: MATH 280. Offered as scheduling allows. Also offered as MATH 380.
289, 389. Independent Study.
450. SYE Seminar
489. Independent SYE
498. Honors SYE