Course Schedule
COURSE SCHEDULE: summer 2017
COMP 10-C
Computer Science for All

TBD

Jason Wilson
TR 3:00-4:15
Room To Be Announced
COMP 11-C
Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.) Recommendations: High school algebra. No prior programming experience is necessary.

Michael Shah
MW 6:00p-8:30p
Halligan Hall 111B
COMP 15-C
Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent. This course and COMP 50-01 (COMP 50-PSS) may not both be taken for credit.
Partha Biswas
M 6:00p-9:30p
Halligan Hall 108
COMP 20-A
Web Programming

An introduction to techniques, principles, and practices of writing computer programs for the World Wide Web. Server and browser capabilities and limits. Media types, handlers, and limitations. Web programming languages and techniques. Web security, privacy, and commerce. Lectures augmented with programming projects illustrating concepts and current practice.

Prerequisite: COMP 11; or COMP 10 and consent.
Ming Chow
MTWRF 12:00a-12:00a
Online
COMP 50-A
Fundamentals of Computational Design

With the availability of increased computing power, many engineering disciplines now rely on utilizing computation to explore different design options. This class introduces fundamental concepts in "computationally" designing complex engineering systems. Students will learn computational design principles shared when designing bridges, airplane wings, and robots. The course will use MATLAB as a computational platform, and cover fundamental concepts such as a solution space, design decision variables, constraints, optimal points within the design space and searching the design space using efficient algorithms, exhaustive enumeration, and approximate algorithms.

Prerequisite: Prior programming experience in C, C++, Java, MATLAB, or Python through a formal course at the university or high school level. High School Algebra.
Soha Hassoun
MTWRF 12:00a-12:00a
Online
COMP 61-A
Discrete Mathematics (formerly Comp 22)

(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 11 or 32 or Computer Science 11 or permission of instructor.
Zachary Faubion
MTWRF 10:45-12:30
Bromfield-Pearson 005
COMP 116-B
Introduction to Computer Security

A systems perspective on host-based and network-based computer security. Current vulnerabilities and measures for protecting hosts and networks. Firewalls and intrusion detection systems. Principles illustrated through hands-on programming projects.

Prerequisite: Comp 40.
Ming Chow
MTWRF 12:00a-12:00a
Online
COMP 131-A
Artificial Intelligence

History, theory, and computational methods of artificial intelligence. Basic concepts include representation of knowledge and computational methods for reasoning. One or two application areas will be studied, to be selected from expert systems, robotics, computer vision, natural language understanding, and planning.

Prerequisite: Comp 15 and either COMP/MATH 22 or 61 or familiarity with both symbolic logic and basic probability theory.
Fabrizio Santini
TR 6:00p-8:30p
Halligan Hall 108
COMP 150-B
Algorithms and Data Structures

This course offers an opportunity to expand your knowledge on various topics involving algorithms, data structures and graphs. Often these topics are intertwined; e.g., to create efficient algorithms, it may be useful to design data structures or use existing ones. We will cover a range of topics, such as network and path approximation, all-pairs shortest paths, near-planarity, string matching, linear programming, Fibonacci heaps, balanced trees (Splay, WAVL, Suffix), skip lists, fractional cascading, high-dimensional range counting, etc. These are topics that are useful to know, as one prepares for advanced interviews and/or further graduate work. As an elective, this course will aim to let each student focus more on topics that they are interested in. Evaluation will be primarily based on participation and a project.

Prerequisite: Completion of COMP 160
Greg Aloupis
MTWRF 12:00a-12:00a
Online
COMP 160-A
Algorithms

Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Greg Aloupis
MTWRF 12:00a-12:00a
Online
COMP 170-A
Computation Theory

Models of computation: Turing machines, pushdown automata, and finite automata. Grammars and formal languages including context-free languages and regular sets. Important problems including the halting problem and language equivalence theorems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Harry Mairson
MW 6:00p-9:30p
Halligan Hall 102