CS Course Dependencies 2016-2017

The dependency diagram below shows which courses are prerequisites for others. Black lines indicate required courses; green lines indicated recommended courses. For lines of other colors, any one line of a given color satisfies a course prerequisite.

Move the mouse over a course to see its description. Click on a course to go to its website. For a discussion of intro CS course options, see Choosing an Introductory CS Course.

The CS department has tried hard to keep the chains of dependencies short, so we hope it won't be hard to satisfy them. Talk to the instructor of a course if you have any questions or concerns. We're happy to help.

To see the content that should be drawn here, please upgrade your browser to one that supports the HTML5 canvas element. The newest versions of Firefox and Chrome do.

JavaScript version created by: Scott D. Anderson, based on an imagemap original by Christina Pong '09 & Ewelina Oleszek '10
Date Created: 08/20/2012 (sanderso) | Last Modified: 08/29/2016 (fturbak) | Expires: 08/15/2017

CS 110 Computer Science and the Internet
Anderson, Mustafaraj, Turbak
This course explains the basics of how the Internet works and how to build a Web site. Topics include client-server architecture, structuring Web pages with HTML, CSS, and JavaScript, the representation of colors, images, and sound on the computer, encryption, cookies, and CGI forms. We also discuss accessibility, copyright, intellectual property, and critical thinking in the context of the Internet. The required project models most phases of the standard software lifecycle. Students are introduced to programming by building an interactive Web site using JavaScript. Students are required to attend an additional 70-minute discussion section each week.
Prerequisite: None. No prior background with computers is expected.
Distribution: Mathematical Modeling.
Offered: Every semester
CS 111 Computer Programming and Problem Solving
Mustafaraj, Reddy, Turbak, Wood, Staff
An introduction to problem solving through computer programming. Students learn how to read, modify, design, debug, and test algorithms that solve problems. Programming concepts include control structures, data structures, abstraction, recursion, modularity, and object-oriented design. Students explore these concepts in the context of interactive programs involving graphics and user interfaces, using the Python programming language. Students are required to attend an additional two-hour laboratory section each week. Required for students who wish to major or minor in computer science or elect more advanced courses in the field.
Prerequisite: Fulfillment of the basic skills component of the Quantitative Reasoning requirement. No prior background with computers is expected.
Distribution: Mathematical Modeling. Does not satisfy the laboratory requirement.
Offered: Every semester
CS 112 Computation for the Sciences
Staff
An introduction to computer programming that provides the tools necessary for students to use computers effectively in scientific work, including physical sciences, biological sciences, medicine, mathematics, psychology and economics. Students learn to write software to solve problems, visualize and analyze data, perform computer simulations, and implement and test computational models that arise in a wide range of scientific disciplines. The course introduces MATLAB, an extensive and widely used technical computing environment with advanced graphics, visualization and analysis tools, and a rich high-level programming language. Students are required to attend an additional two-hour laboratory section each week.
Prerequisite: Fulfillment of the basic skills component of the Quantitative Reasoning requirement. No prior background with computers is expected.
Distribution: Mathematical Modeling. Does not satisfy the laboratory requirement.
Offered: Spring 2017
CS 115 Computing for the Socio-Techno Web
Metaxas
Technologies and services made available from Computer Science, such as online environments Facebook, Twitter, and Wikipedia, are integral in today's world. Many problems exist in our real world that transfer to and get amplified in the virtual world created by highly interconnected and ubiquitous computing. What are the basic technologies that enable all this innovation? How do these new environments affect our lives? This course aims to answer these questions through investigation of the socio-techno web. On the technical side we study three languages: HTML5, CSS, and basic JavaScript. We interweave the technical with the social aspects by examining issues introduced by the use of the Social Web. In the process we learn how computers work.
Prerequisite: None. No prior background with computers is expected.
Distribution: Mathematical Modeling. Does not satisfy the laboratory requirement.
Offered: Every semester
CS 125 First-Year Seminar: Brains, Minds, and Machines: The Science of Intelligence
Hildreth, Wiest
How is intelligent behavior produced by the brain and how can it be replicated in machines? This seminar explores human intelligence through the perspectives of neuroscience, cognitive science, and computer science, integrating studies of the brain, the mind, and the computations needed to create intelligent machines. This interdisciplinary approach has accelerated the pace of research aimed at understanding how intelligent agents use vision to recognize objects and events; navigate through a complex, dynamic environment; use language to communicate; and develop a conscious awareness of the world. Through exploration of current research and hands-on computer activities, students learn about methods used to probe neural circuits and visualize brain activity; investigate human performance and behavior; and build computer models that capture the remarkable abilities of biological systems.
Prerequisite: None.
Distribution: Natural and Physical Sciences
Offered: Spring 2017
CS 215 Multimedia Design and Programming
Metaxas
The purpose of this course is to give students a broad foundation in issues related to creating multimedia and hypermedia applications. Topics to be covered include history and philosophy of hypermedia; principles of human-computer interaction; multimedia programming; optimizing for CD-ROMs and the World Wide Web; digital representation and editing of media (audio, graphics, video); media compression and transmission; and delivery of multimedia applications.
Prerequisite: 111 or 115, with a grade of at least C+, is required, or permission of the instructor. At least one of ARTS 105, ARTS 108/CAMS 138, or ARTS 109/CAMS 139 is recommended.
Distribution: Mathematical Modeling.
Offered: NOT OFFERED IN 2016-17
CS 220 Human-Computer Interaction
Shaer
Human-Computer Interaction is one of the areas that have transformed the way we use computers in the last 30 years. Topics include methodology for designing and testing user interfaces, interaction styles (command line, menus, graphical user interfaces, virtual reality, tangible user interfaces), interaction techniques (including use of voice, gesture, eye movements), design guidelines, and user interface software tools. Students will design a user interface, program a prototype, and test the results for usability.
Prerequisite: One of: 110, 111, 112, 115, 117
Distribution: Mathematical Modeling.
Offered: Fall 2016 and Spring 2017
CS 230 Data Structures
Bassem, DeFlumere, Staff
An introduction to techniques and building blocks for organizing large programs. Topics include: modules, abstract data types, recursion, algorithmic efficiency, and the use and implementation of standard data structures and algorithms, such as lists, trees, graphs, stacks, queues, priority queues, tables, sorting, and searching. Students become familiar with these concepts through weekly programming assignments using the Java programming language. Students are required to attend an additional two-hour laboratory section each week.
Prerequisite: CS 111 or permission of the instructor. Students who received a grade of C+ or lower in CS 111 must contact the instructor before enrolling.
Distribution: Mathematical Modeling. Does not satisfy the laboratory requirement.
Offered: Every semester
CS 231 Fundamental Algorithms
Loparev, Shull, Staff
An introduction to the design and analysis of fundamental algorithms. General techniques covered: divide-and-conquer algorithms, dynamic programming, greediness, probabilistic algorithms. Topics include: sorting, searching, graph algorithms, compression, cryptography, computational geometry, and NP-completeness.
Prerequisite: 230 and either MATH 225 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Every semester
CS 232 Artificial Intelligence
Mustafaraj
An introduction to artificial intelligence (AI), the design of computer systems that possess and acquire knowledge and can reason with that knowledge. Topics include knowledge representation, problem solving and search, planning, vision, language comprehension and production, learning, common sense reasoning, and expert systems. To attain a realistic and concrete understanding of these problems, the Python programming language will be taught and used to implement the algorithms of the course. Alternate year course.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: NOT OFFERED IN 2016-17
CS 235 Languages and Automata
Tjaden
This course offers an introduction to the concepts of languages and automata. Topics include languages, regular expressions, finite automata, grammars, pushdown automata, and Turing machines. The first half of the semester covers the Chomsky hierarchy of languages and their associated computational models. The second half of the semester focuses on decidability issues and unsolvable problems. The course closes with a brief introduction to complexity theory.
Prerequisite: 230 and either MATH 225 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Every semester
CS 240 Machine Organization
Shull,Wood
This course examines how modern computer systems run programs, introducing key software and hardware abstractions between high-level programming languages and hardware circuits. The course traces themes of data representation and program translation, with a focus on how each level of abstraction (and its implementation) in a computer system impacts the execution of a high-level program. Topics include the C programming language, basic concepts of program compilation and assembly, machine code, instruction set architecture, basic microarchitecture, number representation and computer arithmetic, digital logic, the memory hierarchy, the operating system process model, virtual memory, and memory management. Students explore computer systems through projects ranging from simple hardware circuits to software memory allocators. Students are required to attend one three-hour laboratory weekly.
Prerequisite: 111, 112, or permission of instructor.
Distribution: Mathematical Modeling. This course satisfies the laboratory requirement.
Offered: Every semester
CS 242 Computer Networks
Shull
A systems-oriented approach to data networks, including a theoretical discussion of common networking problems and an examination of modern networks and protocols. Topics include point-topoint links, packet switching, internet protocols, end-to-end protocols, congestion control, and security. Projects may include client-server applications and network measurement tools. Alternate year course.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: NOT OFFERED IN 2016-17
CS 249-01-F Topics in Computer Science
Topic for Fall 2016: Scientific and Parallel Computing
DeFlumere
What makes a computer good or bad at running scientific computation or visualization? Does it depend on the person doing the programming? This course provides an introduction to parallel computing systems and their use in scientific applications. Topics considered include parallelism in hardware design, especially multicores and GPUs, the programming of parallel systems including programming paradigms and algorithm design, and evaluating the efficiency of parallel systems. The course will conclude with lectures on various topics in Scientific Computing such as climate science, computational astronomy, and big data. Instructor
Prerequisite: 230 or permission of the instructor
Distribution: Mathematical Modeling.
Offered: Fall 2016
CS 249-01-F Topics in Computer Science
Topic for Fall 2016: Scientific and Parallel Computing
DeFlumere
What makes a computer good or bad at running scientific computation or visualization? Does it depend on the person doing the programming? This course provides an introduction to parallel computing systems and their use in scientific applications. Topics considered include parallelism in hardware design, especially multicores and GPUs, the programming of parallel systems including programming paradigms and algorithm design, and evaluating the efficiency of parallel systems. The course will conclude with lectures on various topics in Scientific Computing such as climate science, computational astronomy, and big data. Instructor
Prerequisite: 230 or permission of the instructor
Distribution: Mathematical Modeling.
Offered: Fall 2016
CS 249-01-S Topics in Computer Science
Topic for Spring 2017: Introduction to Front-End Web Development
Anderson
This course introduces modern web development using HTML, CSS and JavaScript. JavaScript is explored in detail, including scoping, closures, objects, prototype inheritance, and namespacing. The jQuery library is also introduced, and the course covers event handling and Ajax interactions. Students will build web pages using front-end templates such as bootstrap and JavaScript libraries for client-side templating. Designed web pages will be modern, responsive and accessible. The course also covers the jQuery UI (User Interface) library and its capabilities. Other topics may include encryption, copyright, intellectual property and version control.
Prerequisite: 111 or 115
Distribution: Mathematical Modeling.
Offered: Spring 2017
CS 251 Programming Languages
Turbak
This course introduces principles underlying the design, semantics, and implementation of modern programming languages in major paradigms including function-oriented, imperative, and object-oriented. The course examines: language dimensions including syntax, naming, state, data, control, types, abstraction, modularity, and extensibility; issues in the runtime representation and implementation of programming languages; and the expression and management of parallelism and concurrency. Students explore course topics via programming exercises in several languages, including the development of programming language interpreters.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Every semester.
CS 301 Compiler and Runtime System Design
Wood
This course covers principle and practice in the design and implementation of modern compilers and programming language runtime systems. Topics include lexical analysis, parsing, symbols tables, semantic analysis, type checking, intermediate representations, program analysis and optimization, code generation, garbage collection, and other runtime support. As time permits, the course may also survey topics including just-in-time compilation, runtime optimization, concurrent runtime systems, or extended automatic program error detection. Students will construct a full compiler and runtime system for a simple statically-typed programming language over the course of the semester.
Prerequisite: CS 230 and at least one of CS 240 or CS 251. CS 235 is recommended, but not required.
Distribution: Mathematical Modeling.
Offered: NOT OFFERED IN 2016-17
CS 304 Databases with Web Interfaces
Anderson
A study of the three-layer architecture commonly used for Web-based applications such as e-commerce sites. We will learn to model and design databases uses entity-relationship diagrams, and the Standard Query Language (SQL) for managing databases. We will learn PHP, CGI/Python, and Java Servlets, which are three important technologies for Web-based architectures. We will also discuss performance, reliability and security issues. Finally, we will create dynamic Web sites driven by database entries.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Fall 2016 and Spring 2017
CS 307 Computer Graphics
Anderson
A survey of topics in computer graphics with an emphasis on fundamental techniques. Topics include: graphics hardware, fundamentals of three-dimensional graphics including modeling, projection, coordinate transformation, synthetic camera specification, color, lighting, shading, hidden surface removal, animation, and texture-mapping. We also cover the mathematical representation and programming specification of lines, planes, curves, and surfaces.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Fall 2016
CS 310 Foundations of Cryptology
Shull
When is a cryptographic system secure and how will we ever know? This course introduces the computational models and theory computer scientists use to address these issues. Topics include one-way functions, trapdoor functions, probabilistic complexity classes, pseudorandom generators, interactive proof systems, zero-knowledge proofs, and the application of these theories to modern cryptology. Normally offered in alternate years.
Prerequisite: 231 or 235 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Fall 2016
CS 313 Computational Biology
Tjaden
Many elegant computational problems arise naturally in the modern study of molecular biology. This course is an introduction to the design, implementation, and analysis of algorithms with applications in genomics. Topics include bioinformatic algorithms for dynamic programming, tree-building, clustering, hidden Markov models, expectation maximization, Gibbs sampling, and stochastic context-free grammars. Topics will be studied in the context of analyzing DNA sequences and other sources of biological data. Applications include sequence alignment, gene-finding, structure prediction, motif and pattern searches, and phylogenetic inference. Course projects will involve significant computer programming in Java. No biology background is expected. Alternate year course.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: NOT OFFERED IN 2016-17
CS 315 Data and Text Mining for the Web
Mustafaraj
In the past decade, we have experienced the rise of socio-technological systems used by millions of people: Google, Facebook, Twitter, Wikipedia, etc. Such systems are on the one hand computational systems, using sophisticated infrastructure and algorithms to organize huge amount of data and text, but on the other hand social systems, because they cannot succeed without human participation. How are such systems built? What algorithms underlie their foundations? How does human behavior influence their operation and vice-versa? In this class, we will delve into answering these questions by means of: a) reading current research papers on the inner-workings of such systems; b) implementing algorithms that accomplish tasks such as web crawling, web search, random walks, learning to rank, text classification, topic modeling; and c) critically thinking about the unexamined embrace of techno-solutionism using a humanistic lens. Normally offered in alternate years.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Spring 2017
CS 320 Tangible User Interfaces
Shaer
Tangible user interfaces emerge as a novel human-computer interaction style that interlinks the physical and digital worlds. Extending beyond the limitations of the computer mouse, keyboard and monitor, tangible user interfaces allow users to take advantage of their natural spatial skills while supporting collaborative work. Students will be introduced to conceptual frameworks, the latest research, and a variety of techniques for designing and building these interfaces. Developing tangible interfaces requires creativity as well as an interdisciplinary perspective. Hence, students will work in teams to design, prototype and physically build tangible user interfaces.
Prerequisite: 220 or 215 or 230, or permission of instructor.
Distribution: Mathematical Modeling.
Offered: Fall 2016
CS 322 Seminar: Learning and Teaching in a Digital World
Chapman
Digital technologies are part of our social fabric. This design-intensive seminar investigates the intersection of digital technologies, learning, and learning communities. Technologies inform the where, the when and the how of teaching and learning, whether within a public space, classroom, or the virtual realm. We will explore how effective and responsive educators may harness technology-rich options and introduce you to design methodologies for inclusive teaching and learning. The course will include guest speakers and field trips. Cross Listed as EDUC 322
Prerequisite: Permission of the instructor and one of EDUC 110, EDUC 215, or EDUC 216
Distribution: Epistemology and Cognition
Offered: Fall 2016
CS 332 Visual Processing by Computer and Biological Vision Systems
Hildreth
This course explores models for deriving information about the threedimensional world from visual images. We examine methods used in computer vision systems to analyze digital images and strategies used by biological vision systems to interpret the retinal image. An interdisciplinary approach that combines computer science, psychology and neuroscience, and contributes to the design of effective computer vision systems and the understanding of human visual processing. Topics include: edge detection, stereo vision, motion analysis, shape from shading, color, object recognition, and image processing applications in medicine, security, information retrieval and intelligent vehicles. The course uses vision software written in MATLAB. Normally offered in alternate years
Prerequisite: 112 or 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Fall 2016
CS 342 Computer Security
Turbak
An introduction to computer security. Topics include ethics, privacy, authentication, access control, information flow, operating system security (with a focus on Linux), cryptography, security protocols, intrusion prevention and detection, firewalls, viruses, network security, Web security, programming language security. Assignments include hands-on exercises with security exploits and tools in a Linux environment. Participants will independently research, present, and lead discussions on security-related topics. Students are required to attend an additional 70-minute discussion section each week. Normally offered in alternate years.
Prerequisite: 230 and 240 or permission of the instructor. 242 recommended.
Distribution: Mathematical Modeling.
Offered: NOT OFFERED IN 2016-17
CS 349-01-S Advanced Topics in Computer Science
Topic 1 for Spring 2017: Distributed Computing
Bassem
What is the “cloud”? What is a distributed system? This course is for students interested in understanding the fundamental concepts and algorithms underlying existing distributed systems. By the end of this course, students will have the basic knowledge needed to work with and build distributed systems, such as peer-to-peer systems and cloud computing systems. Topics include MapReduce, Spark, communication models, synchronization, distributed file systems, coordination algorithms, consensus algorithms, fault-tolerance, and security.
Prerequisite:230, 231, and 242 are recommended, but not required.
Distribution: Mathematical Modeling.
Offered: Spring 2017
CS 349-02-S Advanced Topics in Computer Science
Topic 2 for Spring 2017: Machine Learning
Reddy
Machine learning is the science of teaching computers how to learn from observations. It is ubiquitous in our interactions with society, showing up in face recognition, web search, targeted advertising, speech processing, genetic analysis, and even Facebook’s selection of posts to display. It is currently at the forefront of research in artificial intelligence, and has been making rapid strides given the vast availability of data today. This course is a broad introduction to the field, covering the theoretical ideas behind widely used algorithms like support vector machines, neural networks, graphical models, decision trees, and many more. We will also study practical applications of these algorithms to problems in vision, speech, language, biology, and the social sciences.
Prerequisite:230 and either MATH 206 or MATH 220 or MATH 225
Distribution: Mathematical Modeling.
Offered: Spring 2017
ARTS 105: Drawing I
An introduction to the fundamentals of drawing with attention to the articulation of line, shape, form, gesture, perspective, and value.
ARTS 108/CAMS 138: Photography I
An introductory course which explores photography as a means of visual communication by producing and analyzing photographic images.
ARTS 109 Two Dimensional Design
This introductory studio course focuses on the issue of composition in two-dimensional imagery. It introduces the fundamental elements of design (e.g. line, shape, value, space, color) and their function in the process of composition.
MATH 206 Linear Algebra
Diesl (Fall), Shultz (Fall), Volic (Spring), Wang (Spring)
Linear algebra is one of the most beautiful subjects in the undergraduate mathematics curriculum. It is also one of the most important with many possible applications. In this course, students learn computational techniques that have widespread applications in the natural and social sciences as well as in industry, finance, and management. There is also a focus on learning how to understand and write mathematical proofs and an emphasis on improving mathematical style and sophistication. Topics include vector spaces, subspaces, linear independence, bases, dimension, inner products, linear transformations, matrix representations, range and null spaces, inverses, and eigenvalues.
Prerequisite: MATH 205 or MATH 215; or, with permission of the instructor, MATH 116, MATH 120, or the equivalent. At most two of the three courses MATH 206, MATH 210, and MATH 215 can be counted toward the MATH major or minor.
Distribution: Mathematical Modeling.
Offered: Every semester.
MATH 220 Probability and Elementary Statistics
Wang (Fall), staff (Spring)
This course is about the mathematics of uncertainty, where we use the ideas of probability to describe patterns in chance phenomena. Probability is the basis of statistics and game theory, and is immensely useful in many fields including business, social and physical sciences, and medicine. The first part of the course focuses on probability theory (random variables, conditional probability, probability distributions), using integration and infinite series. The second part discusses topics from statistics (sampling, estimation, confidence interval, hypothesis testing). Applications are taken from areas such as medical diagnosis, quality control, gambling, political polls, and others.
Prerequisite: MATH 205. Open to students with a strong background in single-variable calculus (MATH 116, MATH 120, or the equivalent) by permission of the instructor.
Distribution: Mathematical Modeling, Quanitative Reasoning Overlay
Offered: Every semester.
MATH 225 Combinatorics and Graph Theory
Hirschhorn (Spring), Shultz (Fall), Trenk (Fall), Volic (Spring)
Combinatorics is the art of counting possibilities: for instance, how many different ways are there to distribute 20 apples to 10 kids? Graph theory is the study of connected networks of objects. Both have important applications to many areas of mathematics and computer science. The course will be taught emphasizing creative problemsolving as well as methods of proof, such as proof by contradiction and induction. Topics include: selections and arrangements, generating functions, recurrence relations, graph coloring, Hamiltonian and Eulerian circuits, and trees.
Prerequisite: Prerequisite: MATH 116, MATH 120, or the equivalent; or CS 230 together with permission of the instructor
Distribution: Mathematical Modeling.
Offered: Every semester.