CS Course Dependencies Diagram, 2014-2015

Consult the dependency diagram below to figure out which courses are prerequisites for others. Black lines indicate required courses. Red lines indicated recommended courses. For lines of other non-black colors, any line of a given color satisfies the prerequisite.

Mouse over a course to see its description. Click on a course to go to its website. See Choosing an Introductory CS Course for a discussion of intro CS course options.

The CS department has tried hard to keep the chains of dependencies short, so we hope it won't be hard to satisfy them. Nevertheless, 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: 8/20/2012 (sanderso) | Last Modified: 11/3/2014 (ehildreth) | Expires: 8/15/2015

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
Tjaden, Turbak, Price Jones
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: None. 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
Hildreth
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: None. No prior background with computers is expected.
Distribution: Mathematical Modeling. Does not satisfy the laboratory requirement.
Offered: Spring 2015
CS 114 The Socio-Technological Web
Mir
As more and more people use the technologies and services made available from computer science, online environments like Facebook, Second Life, MySpace, Wikipedia, blogs, and open source development communities, have been flourishing. It is becoming clear that problems existing in our real world transfer and become amplified in the virtual world created by our interconnectivity. This course will start by studying the structure of the traditional Web and its recent successor, the Social Web, and will focus on issues of virtual identity, personal and group privacy, trust evaluation and propagation, online security, critical thinking, online propaganda, googlearchy, fraud and manipulation, restricted resources, class differences, self-perception, and decision-making. Students are required to attend an additional 70-minute discussion section each.
Prerequisite: None. No prior background with computers is expected.
Distribution: Mathematical Modeling. Does not satisfy the laboratory requirement.
Offered: Fall 2014
CS 117 Inventing Mobile Apps
Turbak
This course teaches how to create apps for mobile devices as a vehicle for learning big ideas of computer science, engineering, and entrepreneurship and explore technology's impact on society. Applications include games, quizzes, electronic voting, location-aware apps, social networking, and apps that communicate with web services. All apps will be created on Android phones using App Inventor, a visual programming environment that does not require previous programming experience. The course culminates in a project where students design and implement new mobile apps for clients. Students are required to attend an additional 70-minute laboratory section each week.
Prerequisite: None. No prior background with computers is expected.
Distribution: Mathematical Modeling. Does not satisfy the laboratory requirement.
Offered: Fall 2014
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 118, 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: Fall 2014
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, 117, 118
Distribution: Mathematical Modeling.
Offered: Spring 2015
CS 230 Data Structures
Shaer, Wood, Metaxas, Tjaden
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: 111 or 118 or permission of the instructor. Students who received a grade of C+ or lower in 111 must contact the instructor before enrolling.
Distribution: Mathematical Modeling. Does not satisfy the laboratory requirement.
Offered: Every semester
CS 231 Fundamental Algorithms
Metaxas, Tjaden
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 2014-15
CS 235 Languages and Automata
Price Jones
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 and the course closes with a brief introduction to complexity theory. The course includes a programming component investigating the application of automata theory to the scanning and parsing of programming languages.
Prerequisite: 230 and either MATH 225 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Every semester
CS 240 Machine Organization
Wood
This course is intended to demystify the computer (open up the "black box") and teach how information at the highest level is processed and ultimately executed by the underlying circuitry. To this end, the course provides an introduction to machine organization and assembly language programming. Specific topics include the fundamentals of computer organization (introduction to numeric representation, Boolean logic, digital logic and all associated technology), a basic data path imple- mentation, assembly language programming, how to assess and understand the performance of a computer, and brief overviews of assemblers, compilers and operating systems. Students are required to attend one three-hour laboratory weekly.
Prerequisite: 111, 112, or 118
Distribution: Mathematical Modeling. This course satisfies the laboratory requirement.
Offered: Every semester
CS 242 Computer Networks
Staff
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 2014-15
CS 249 Topics in Computer Science
Topic for 2014-15: Web Mashups
Mustafaraj
On the Web, your friends are on Facebook, the music you like on Pandora, the instructional videos on YouTube, the places to visit on Google Maps. Is there a way to bring these contents into one single website? Yes, and it is called a web mshup, a new kind of website created by combining together data and services from different websites. These websites (such as Google Maps) allow access through an API (application programming interface), and one can combine their contents in innovative and inspiring ways. Students in this course will build as a final project a web mashup that provides an informational, societal, or entertainment value not available in existing websites, by learning the latest, cross-platform technologies such as HTML5, jQuery, Ajax, and Google App Engine.
Prerequisite: One of 110, 111, 112, 114, 117, or 118, and by permission of the instructor (students must submit a Google form to the instructor before enrolling).
Distribution: Mathematical Modeling.
Offered: Spring 2015
CS 251 Programming Languages
Wood
This course offers an introduction to the dimensions of modern programming languages. Covers major programming paradigms: function-oriented, imperative, object-oriented, and logic-oriented. Dimensions include syntax, naming, state, data, control, concurrency, nondeterminism, and types. These dimensions are explored via mini-language interpreters written in OCaml, Scheme, and Haskell that students experiment with and extend.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Spring 2015
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: Spring 2015
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 2014
CS 310 Theoretical 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
Prerequisite: 231 or 235 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: NOT OFFERED IN 2014-15
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 2014-15
CS 315 Web Search and Data Mining
Metaxas
In the last decade we have experienced an explosive growth of information through the web. Locating information seems to be very easy, while determining the quality of information can be tricky. This course is for students who want to know why search engines can answer your queries fast and (most of the time) accurately, why other times seem to be missing the point and provide untrustworthy information, and how one can design a Web site that acquires high visibility on the Web. We will cover traditional information retrieval methods and web search algorithms such as crawlers and spiders, with a focus on probabilistic and graphtheoretic methods that can detect Web spam. We will also cover some basic understanding of text mining and data clustering. Time permitting, we will examine other relevant issues of the information explosion era, such as the shape and structure of the Web, epistemology of information and properties of large random networks. Alternate year course.
Prerequisite: 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: Spring 2015
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 2014
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. Students are required to attend an additional 70-minute discussion section each week. Alternate year course.
Prerequisite: 112 or 230 or permission of the instructor.
Distribution: Mathematical Modeling.
Offered: NOT OFFERED IN 2014-15
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.
Prerequisite: 230 and 240 or permission of the instructor. 242 recommended.
Distribution: Mathematical Modeling.
Offered: Fall 2014
CS 349 Advanced Topics in Computer Science
Topic for 2014-15: Quantifying Data Privacy
Mir
Privacy is recognized as a fundamental human right, and this recognition is increasingly being extended to people's data. Yet, there is vigorous debate and disagreement on the meaning of data privacy and how to preserve it. This course is an in-depth study into how computer scientists quantify privacy, how dealing with data necessitates such a consideration, what are good notions of data privacy and how we can design technologies and algorithms that fulfill such notions.
Prerequisite:CS 230 and MATH 225 or permission of the instructor
Distribution: Mathematical Modeling.
Offered: Spring 2015
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 225 Combinatorics and Graph Theory
Trenk, Kerr
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. 144 Mathematics 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.