Tara Holm
A basic introduction to Calculus and Linear Algebra. The goal is
to make students mathematically literate in preparation for studying a
scientific/engineering discipline. The first week covers differential
calculus: graphing functions, limits, derivatives, and applying
differentiation to real-world problems, such as maximization and rates
of change. The second week covers integral calculus: sums,
integration, areas under curves and computing volumes. This is not
meant to be a comprehensive calculus course, but rather an
introduction to the fundamental concepts. The third and fourth weeks
introduce some basic linear algebra: vector spaces, linear
transformations, matrices, matrix operations, and diagonalization. The
emphasis will be on using the results, not on their proofs.
Text: Quick Calculus, 2nd Edition, by Kleppner and Ramsey. Matrices and Transformations, Pettofrezzo.
Reference: Calculus with Analytic Geometry, Simmons. Introduction to Linear Algebra, by Strang,
Requirements: Four exams and 17 assignments
Holly Yanco and John Pezaris
An introduction to programming and the power of abstraction, using Abelson and Sussman's classic textbook of the same name. Key concepts include: building abstractions, computational processes, higher-order procedures, compound data, data abstractions, controlling interactions, generic operations, self-describing data, message passing, streams and infinite data structures, meta-linguistic abstraction, interpretation of programming languages, machine model, compilation, and embedded languages.
Text: Structure and Interpretation of Computer Programs, Abelson and Sussman
Reference: Simply Scheme, Harvey and Wright.
Requirements: Three exams and nine problem sets.
Shai Simonson
This course covered the mathematical topics most directly related to computer science. Topics included: logic, relations, functions, basic set theory, countability and counting arguments, proof techniques, mathematical induction, graph theory, combinatorics, discrete probability, recursion, recurrence relations, and number theory. Emphasis will be placed on providing a context for the application of the mathematics within computer science. The analysis of algorithms requires the ability to count the number of operations in an algorithm. Recursive algorithms in particular depend on the solution to a recurrence equation, and a proof of correctness by mathematical induction. The design of a digital circuit requires the knowledge of Boolean algebra. Software engineering uses sets, graphs, trees and other data structures. Number theory is at the heart of secure messaging systems and cryptography. Logic is used in AI research in theorem proving and in database query systems. Proofs by induction and the more general notions of mathematical proof are ubiquitous in theory of computation, compiler design and formal grammars. Probabilistic notions crop up in architectural trade-offs in hardware design.
Text: Discrete Mathematics and its Applications, Rosen.
Reference: Concrete Mathematics, Graham, Knuth and Patashnik
Requirements: Four exams, seven problem sets, one research problem set.
Gill Pratt
Includes the basics of digital logical design, computer organization
and architecture including assembly language, processor design, memory
hierarchies and pipelining. Students examine the detailed construction
of a very simple computer. Problem sets use Beta-Sim, a RISC simulator
written by Mike Wessler. A higher level view of a modern RISC
architecture is studied, using the Patterson and Hennessey
introductory text, from both the programmer's point of view and the
hardware designer's point of view. The distinction between RISC and
CISC architectures is emphasized.
Text: Computer Organization and Design, Patterson and Hennessey.
Requirements: Two exams and four problem sets.
Dave Goddeau
The concepts of the Object-oriented paradigm using Java. The basic
principles of software engineering are emphasized. We study how
to design and think in an object oriented fashion. As a final
project, students work in groups to develop a Gnutella distributed
music-sharing client.
Text: Core Java I and II, Hortsmann and Cornell.
Requirements: One exam, two problem sets, one project.
Shai Simonson
The design of algorithms is studied, according to methodology and application. Methodologies
include: divide and conquer, dynamic programming, and greedy
strategies. Applications involve: sorting, ordering and
searching, graph algorithms, geometric algorithms, mathematical
(number theory, algebra and linear algebra) algorithms, and string
matching algorithms. Analysis of algorithms is studied - worst case, average case, and amortized -
with an emphasis on the close connection between the time complexity
of an algorithm and the underlying data structures.
NP-Completeness theory is examined along with methods of coping with intractability, such as approximation and probabilistic algorithms.
Text: Introduction to Algorithms, Cormen, Rivest, Leiserson.
Reference: Computers and Intractability, Garey and Johnson
Requirements: Two exams, six problem sets.
Luis Rodriguez
Topics on the engineering of computer software and hardware systems:
techniques for controlling complexity, system infrastructure, networks
and distributed systems, atomicity and coordination of parallel
activities, recovery and reliability, privacy of information, impact
of computer systems on society. Case studies of working systems and
outside reading in the current literature provide comparisons and
contrasts. The group project is to write an NSF systems proposal to
fund a middle-ware product, for announcement RFP01-63.
Text: Distributed Systems, Coulouris, Dollimore, Kindberg. The
Mythical Man-Month, Brooks. Selected papers.
Requirements: One exam, eight essays, one project.
Philip Greenspun
Teaches basics of designing a dynamic web site with a database back
end, including scripting languages, cookies, SQL, and HTML with the
goal of building such a site as the main (group) project Emphasizes
computer-human interface and the graphical display of information.
Crucial to the project is the identification of a client with whom the
group must work with throughout the month, designing specifications,
implementing them, reviewing and evaluating, and testing. This is a
real-life client who intends to host the site for the purposes of
building a community.
Text: Philip and Alex's Guide to Web Publishing, P. Greenspun. Lecture notes, ORACLE reference.
Requirements: Three problem sets, one project.
Shai Simonson
A theoretical treatment of what can be computed and how fast it can be
done. Applications to compilers, string searching, and control circuit
design will be discussed. The hierarchy of finite state machines,
pushdown machines, context free grammars and Turing machines will be
analyzed, along with their variations. The notions of decidability,
complexity theory and a complete discussion of NP-Complete problems
round out the course.
Text: Introduction to the Theory of Computation, Michael Sipser.
Reference: Introduction to Automata Theory, Languages and Computation
by Hopcroft, Motwani and Ullman.
Requirements: Two exams, five problem sets.
Patrick Winston
An quick overview of AI from both the technical and the philosophical
points of view. Topics discussed include search, A*, Knowledge
Representation, Neural Nets.
Text: Artificial Intelligence, Patrick Winston. Selected papers.
Requirements: Two problem sets.
A self-study workshop to review and/or learn a wide range of Unix
tools, including shell scripts, awk, lex, yacc, grep etc. This course did not give grades. It was strictly pass or incomplete.
Text: Various on-line references.
Requirements: Two problem sets.
Ravi Jasuja
A more formal approach to Relational Database Management Systems,
compared the way they were covered during Web Applications.
Database systems are discussed from the physical layer
of B-trees and file servers to the abstract layer of relational design.
Also includes alternative and generic approaches to database
design and database management system including relational, object-relational, and object-oriented systems, SQL
standards, algebraic query languages, integrity constraints, triggers,
functional dependencies, and normal forms. Other topics include tuning
database transactions, security from the application perspective, and data warehousing.
Text: Database Management Systems, Ramakrishnan and Gehrke.
Requirements: Two exams, 10 assignments, one project.
Tina Kapur and Rajeev Surati
Focuses on modeling, quantification, and analysis of uncertainty by
teaching random variables, simple random processes and their
probability distributions, Markov processes, limit theorems, elements
of statistical inference, and decision making under uncertainty. This
course extends the discrete probability learned in the discrete math
class. It focuses on actual applications, and places little emphasis
on proofs. A problem set based on identifying tumors using MRI
(Magnetic Resonance Imaging) is done using Matlab.
Text: Fundamentals of Applied Probability Theory, Al Drake.
Requirements: One exam, three assignments, two problem sets.