Return to Table
of Contents
Go to Program of Study
Go to bottom of document
Courses
There are three levels of courses listed below. Courses numbered 100-199
are open to both College students and graduate students but may only be
taken for credit by College students. Courses numbered 200-299 are open
to both College students and graduate students. Courses numbered 300-399
are open to College students with the consent of the instructor. Other graduate
courses and seminars offered by the Department of Computer Science are open
to College students with the consent of the instructor and the departmental
counselor. Consult the departmental secretary for more information.
Undergraduate Courses
105. Fundamentals of Computer Programming (Pascal). PQ: Math 102,
or 106, or placement into 131 or equivalent; or consent of departmental
counselor. ComSci 105 fulfills one half of the two-course Common Core requirement
in the mathematical sciences. This course is a survey introduction to
computer programming using the Pascal programming language that emphasizes
structure, algorithm construction, and design. Topics include variables,
complex types, iteration, recursion, and procedural/functional/data abstraction.
This course is usually taught on a Macintosh microcomputer. D. Crabb,
Staff. Summer, Autumn, Winter, Spring.
110. Computer Programming as a Liberal Art I: Programming Arts (HyperCard)
(=GS Hum 298). PQ: Math 102, or 106, or placement into 131 or equivalent;
or consent of instructors. ComSci 110-111 fulfills the Common Core requirement
in the mathematical sciences. This course aims to keep pace with how
computing technology is penetrating into the humanistic disciplines. Students
learn to program on an Apple Macintosh in the HyperTalk language, within
the multimedia application HyperCard, and to apply the skills of programming
more generally as a liberal art. As an introduction to programming, the
course presents techniques of problem solving, program coding, algorithm
construction, and debugging using the object-like programming environment
of HyperCard. D. Crabb, W. Sterner. Winter.
111. Computer Programming as a Liberal Art II: Programs as Arguments (HyperCard)
(=GS Hum 299). PQ: ComSci 110 or consent of instructors. ComSci 110-111
fulfills the Common Core requirement in the mathematical sciences. This
is a continuation of ComSci 110, enlarging upon programming arts by identifying
characteristic forms of computer programs such as machines, models, simulations,
and games as genres of argumentation. Students study such forms as recurrent
scientific strategies that are making important contributions to new patterns
of thinking in the humanities and in the social, biological, and physical
sciences. More complete programming experience in HyperCard's object-like
techniques is fostered through case studies in the different programming
genres. Topics include Turing Machines as general computing models and an
interpretation of hypertextual discourse as a "computer game."
D. Crabb, W. Sterner. Spring.
115-116-117. Introduction to Computer Programming I, II, III (Scheme, C++).
PQ: Placement into Math 151 or equivalent, or consent of departmental
counselor. Students may take ComSci 105, then 116-117, although this is
NOT recommended. Any two courses in the ComSci 115-116-117 sequence fulfill
the Common Core requirement in the mathematical sciences. An introduction
to computer programming using the Scheme and C++ programming languages.
Students learn functional and object-oriented programming. Topics include
control and data abstraction, self-reference, time and space analysis, and
basic algorithms and data structures. The ComSci 115-116-117 sequence is
recommended for concentrators as well as for all students planning to take
more advanced courses in computer science. S. Kurtz, M. Swain, Staff.
Summer, Autumn, Winter, Spring.
Undergraduate and Graduate Courses
Other 200-level courses may be offered during 1996-97. Please contact the
department for further information.
215. Logic and Logic Programming (=Math 279). PQ: Math 254 or ComSci
315, or consent of instructor. Programming experience not required. Predicate
logic is a precise logical system developed to formally express mathematical
reasoning. Prolog is a computer language intended to implement a portion
of predicate logic. This course covers both predicate logic and Prolog,
presented to complement each other and to illustrate the principles of logic
programming and automated theorem proving. Topics include syntax and semantics
of propositional and predicate logic, tableaux proofs, resolution, Skolemization,
Herbrand's theorem, unification, refining resolution, and programming in
Prolog, including searching, backtracking, and cut. This course overlaps
only slightly with ComSci 315; students are encouraged to take both courses.
This course is offered in alternate years. Staff. Winter. Not
offered 1996-97; will be offered 1997-98.
221. Programming Languages. PQ: ComSci 116 or consent of instructor.
Programming language design aims at the closest possible correspondence
between the structures of a program and of the problem that it solves. This
course studies some of the structural concepts affecting programming languages--iterative
and recursive control flow, data types and type checking, procedural vs.
functional programming, modularity and encapsulation, fundamentals of interpreting
and compiling, and formal descriptions of syntax and semantics. Students
write short programs in a number of radically different languages to illuminate
the variety of possible designs. G. Nadathur. Winter.
222. Computer Organization. PQ: ComSci 106 or 116. This is an
introduction to virtual machines and system organization. Topics include
multilevel machines, digital logic, microprogramming, conventional machine,
operating system, and assembly language. Comparisons are made of existing
computer architectures. The course may include some assembly language programming.
S. Kurtz. Spring.
230. Operating Systems. PQ: ComSci 117 and 222. This course covers
basic concepts of operating systems. Among the topics discussed are the
notion of a process, interprocess communication and synchronization, main
memory allocation, segmentation, paging, linking and loading, scheduling,
file systems, and security and privacy. This course is currently taught
on Sun workstations using UNIX. J. Firby. Autumn.
240. Information Theory and Coding. PQ: Consent of instructor. This
course introduces students to the mathematical theory of information with
emphasis on coding, especially the development of efficient codes. Topics
include an introduction to coding, quantification of information and its
properties, Huffman codes, arithmetic codes, L-Z and other adaptive coding
techniques, and specific applications. A. Bookstein. Winter.
250. Introduction to Artificial Intelligence and LISP I (=Psych 227). PQ:
ComSci 115-116. This course is an introduction to the theoretical, technical,
and philosophical issues of AI and looks at natural language processing,
planning, problem solving, diagnostic systems, naïve physics, and game
playing. LISP and LISP programming are introduced. K. Hammond, Staff.
Autumn.
251. Introduction to Artificial Intelligence and LISP II (=Psych 228). PQ:
ComSci 250. This is a continuation of the issues and topics introduced
in ComSci 250. K. Hammond. Winter.
253. Projects in Artificial Intelligence. PQ: ComSci 250-251 or consent
of instructor. This course is a practicum in Artificial Intelligence.
The goal of the class is to teach students how to conceptualize a problem,
organize behaviors, and then implement a complete AI system. During the
course, each student selects a particular project, collects data to define
the behavior to be modeled, outlines examples, implements a system, then
tests and evaluates it. Weekly meetings consist of progress reports, classroom
discussion of work, and instruction as to the next step in project development.
Each student is expected to develop a working system that includes a substantial
Artificial Intelligence component and is itself an interesting and useful
artifact. K. Hammond. Spring.
270. Theory of Algorithms. PQ: ComSci 106 or 116, and Math 152 or
254, or consent of instructor. This course is based on analysis
of the performance of algorithms. Some of the topics covered are algorithms
for sorting and selecting the kth largest number out of n
numbers, lower bounds for sorting and searching, dynamic programming, shortest
path algorithms, minimum spanning tree algorithms, fast matrix multiplication,
and fast integer multiplication. Staff. Winter.
274. Combinatorics and Probability (=Math 284). PQ: Math 250 or 254,
or ComSci 275, or consent of instructor. Some experience with proofs. Problems
and methods of enumeration, construction, and existence of discrete structures
are discussed in conjunction with the basic concepts of probability theory
over a finite sample space. Enumeration techniques are applied to the calculation
of probabilities, and conversely, probabilistic arguments are used in the
analysis of combinatorial structures. Topics include permutations, combinations,
linear recurrences, generating functions, principle of inclusion and exclusion,
extremal set systems, coloring graphs and set systems, random variables,
independence, expected value, standard deviation, Chebyshev's and Chernoff's
inequalities, the structure of random graphs and tournaments, and probabilistic
proofs of existence. L. Babai. Winter.
275. Graph Theory. PQ: Math 250, or 255, or consent of instructor.
This course covers the basics of the theory of finite graphs, with an
emphasis on algorithmic techniques. Among the topics are degree sequences,
the matrix-tree theorem, Eulerian graphs, matchings, edge and vertex coloring,
planarity, Menger's theorem, the max-flow/min-cut theorem, and Ramsey theory.
This course is offered in alternate years. Staff. Autumn. Not offered
1996-97; will be offered 1997-98.
280. Introduction to Formal Languages (=Math 280). PQ: Math 250 or
255, and experience with mathematical proofs. Topics covered include
automata theory, regular languages, CFL's, and Turing machines. This course
is a basic introduction to computability theory and formal languages. This
course is offered in alternate years. Staff. Autumn. Not offered 1996-97;
will be offered 1997-98.
281. Introduction to Complexity Theory (=Math 281). PQ: ComSci 280.
This course is a continuation of ComSci 280. More computability topics
are discussed, including the s-m-n theorem and the recursion theorem. We
also discuss resource-bounded computation. This course introduces complexity
theory. Relationships between space and time, determinism and nondeterminism,
NP-completeness, and the P versus NP question are investigated. This
course is offered in alternate years. Staff. Winter.
285. Introduction to Numerical Computation. PQ: Math 205, 250, and
ComSci 105; or consent of instructor. Basic processes of numerical computation
are examined from both an experimental and theoretical point of view. The
course deals with numerical linear algebra, approximation of functions,
approximate integration and differentiation, Fourier transformation, solution
of nonlinear equations, and the approximate solution of initial value problems
for ordinary differential equations. The course concentrates on the most
widely used methods in each area covered. To profit from this course, the
student needs to be proficient in FORTRAN, C, or Pascal; the student should
also know multivariable calculus, as well as the basic facts of linear algebra.
M. Brenner. Spring.
291. Three-dimensional Computer Graphics. PQ: Consent of instructor.
This course teaches how to create lifelike three-dimensional scenes
with a computer. Students cover perspective projection, surface reflectance
models, hidden surface elimination, shape representations (polygons, Bezier
curves, B-splines, and superquadrics), modeling inter-reflections using
ray tracing and environment maps, texture models, and difficulties (aliasing)
caused by the discrete sampling inherent in an image. M. Swain. Spring.
295. Digital Sound Modeling. PQ: Consent of instructor or some programming
experience. This course studies how the basic structure of sound perception
affects the useful ways of representing sound in digital computations, rather
than signal analysis or special applications of synthesis, such as music
or speech. Coursework is divided between mathematical studies, listening
exercises, and a cooperative project using synthesis software. M. O'Donnell.
Spring. Not offered 1996-97; will be offered 1997-98.
298. Bachelor's Thesis. PQ: Open to fourth-year students who are
candidates for honors in computer science. Consent of departmental counselor.
Students are required to submit the College Reading and Research Course
Form. Staff. Autumn, Winter, Spring.
299. Reading and Research in Computer Science. PQ: Consent of instructor
and approval of departmental counselor. Open to both concentrators and nonconcentrators;
students are required to submit the College Reading and Research Course
Form. Reading and research in an area of computer science under the
guidance of a faculty member. A written report is typically required. Staff.
Summer, Autumn, Winter, Spring.
Graduate Courses
College students may register for graduate courses with the consent of the
departmental counselor. Not all 300-level courses listed here will be offered
in 1996-97, and other 300-level courses may be offered that are not listed.
Please contact the departmental secretary for further information.
315. Mathematical Logic I (=Math 277). PQ: Math 254. This course
provides an introduction to mathematical logic. Topics include propositional
and predicate logic, natural deduction systems, models, and the syntactic
notion of proof versus the semantic notion of truth, including soundness
and completeness. The incompleteness theorems are also covered. Staff.
Autumn.
326. Compilers for Computer Languages. PQ: Consent of instructor.
The translation of high-level directives into machine-executable
instructions is a spectacular success of applied computer science. This
course teaches formal and systematic techniques for syntax-directed translation.
Topics include lexical analysis, parsing, abstract syntax, and elements
of code generation. A programming language compiler is built. Staff.
Autumn.
330. Operating Systems. PQ: Consent of instructor. This course
covers basic concepts of operating systems. Among the topics discussed are
the notion of a process, interprocess communication and synchronization,
main memory allocation, segmentation, paging, linking and loading, scheduling,
file systems, and security and privacy. This course is currently taught
on Sun workstations using UNIX. M. O'Donnell. Autumn.
350. Representation and Memory. PQ: ComSci 250 and 251. This
course is an introduction to artificial intelligence, focusing on the interaction
between long-term knowledge and understanding. We cover issues in representation,
memory organization, and the use of knowledge to control inference. K.
Hammond. Autumn.
351. Natural Language Processing. PQ: ComSci 217, 350, and 352. An
introduction to natural language processing, this course includes representation,
parsing, natural language generation, and the interaction between long-term
knowledge and understanding. Staff. Spring.
352. Planning and Problem Solving. PQ: ComSci 250 and 251. This
course examines the current theories of planning and problem solving, including
planning as search, hierarchical planning and constraint posting, and adaptive
planning; and the problems of plan monitoring and reasoning about time and
space. J. Firby. Winter.
353. Agency: Theories of Planning and Action (=Psych 346). PQ: ComSci
350 and 352. The issues involved with the construction of autonomous
intelligent agents are examined. The class focuses on the current work on
agency being done by the Chicago AI Lab and explores problems of planning
from memory, control of activity, integration of perception and reasoning,
and learning from execution. K. Hammond. Spring.
354. Machine Learning. PQ: ComSci 350 and 352. A look at one
of the more problematic areas of machine intelligence: learning. After some
historical examination of the ideas of category formation and inductive
generalization, we examine current work in version space learning, explanation-based
generalization, genetic algorithms, and learning from planning. J. Firby.
Autumn.
355. Computer Vision. PQ: ComSci 220. An introduction to the
automation of visual perception and the mathematical and computational techniques
that have been applied to this problem. Topics include image formation,
boundary detection and image segmentation; understanding shading, texture,
stereo, motion and color; and shape representation and object recognition.
The course also introduces the incorporation of vision with action, including
visual routines, tracking, and implementing a focus of attention. M.
Swain. Spring.
356. Action and Perception. PQ: ComSci 217, 350, and 352. One
area of AI that has always intrigued researchers is the problem of controlling
autonomous agents in the real world. Past work has centered on producing
plans to get things done. However, recent work has shown that action and
perception must be tightly coupled interactive processes and that a plan
must be constantly refined during its execution. The course examines interactive
plan refinement, sensing, and action. J. Firby. Autumn.
357. Qualitative Reasoning. PQ: ComSci 217, 350, and 352. An
examination of formal theories of the commonsense world, naïve physics,
and the logics that support it. Staff. Winter.
358. Advanced AI Programming Techniques. PQ: ComSci 217, 350, and
352. This is an advanced programming course aimed at teaching the skills
needed in the development of large, working AI systems. Staff. Spring.
370. Algorithms. PQ: ComSci 270 or consent of instructor. Analysis
and design of efficient algorithms, with emphasis on the ideas rather than
on implementation. Topics include asymptotic notation; basic algorithm design
techniques such as recursion, dynamic programming, greedy algorithms, and
amortized analysis; sorting and searching; and graph algorithms such as
graph search, minimal spanning trees, and shortest paths. J. Simon. Winter.
371. Combinatorial Optimization (=Bus 475). PQ: ComSci 270 or consent
of instructor. This course focuses on combinatorial problems such as
shortest path, network flow, and matching, and gives give a short introduction
to linear programming to help analyze these problems. Staff. Winter.
372. Combinatorics. PQ: ComSci 275 and background in linear algebra.
Various aspects of families of finite sets are considered. The course
emphasizes applications of linear algebra and the probabilistic method to
combinatorics. Such techniques are frequently used in the theory of computing.
L. Babai. Spring.
373. Parallel Algorithms. PQ: ComSci 270 or consent of instructor.
This course discusses models of parallel computation: shared memory
and networks. Topics covered include basic algorithmic techniques such as
parallel prefix computation, list ranking, and tree-contraction routing
problems, complexity classes, and completeness results, as well as randomized
parallel algorithms. J. Simon. Winter.
376. Linear Programming I (=Bus 472). PQ: Background in linear algebra.
This is an introductory course in linear programming theory. Topics
include polyhedral theory, finite basis theorems, theorems of the alternative,
duality theory, sensitivity analysis, the simplex algorithm, and interior
point algorithms. This course is offered in alternate years. K. Martin.
Winter.
377. Linear Programming II (=Bus 474). PQ: ComSci 376 or consent
of instructor. This is a course in large-scale linear and linear integer
programming. There are three parts to the course. The first part is an introduction
to integer programming. Topics include branch-and-bound and basis reduction
algorithms. The second part is devoted to the decomposition of large problems
using Dantzig-Wolfe, Benders, and Lagrangian methods. The third part of
the course deals with computing LU factorizations of large basis matrices.
K. Martin. Spring.
380-381. Theory of Recursive Functions I, II (=Math 302-303). PQ:
Math 255 or consent of instructor. Math 302 concerns recursive (i.e.,
computable) functions and sets generated by an algorithm (recursively enumerable
sets). Topics include various mathematical models for computations, including
Turing machines and Kleene schemata; enumeration and s-m-n theorems; the
recursion theorem; classification of unsolvable problems; and priority methods
for the construction of recursively enumerable sets and degrees. Math 303
treats classification of sets by the degree of information they encode,
algebraic structure and degrees of recursively enumerable sets, advanced
priority methods, and generalized recursion theory. This course is offered
in alternate years. R. Soare. Winter, Spring. Not offered 1996-97; will
be offered 1997-98.
382. Distributed Algorithms. PQ: ComSci 270 or consent of instructor.
This course studies algorithmic problems in distributed systems. Topics
include models of distributed systems, problems of contention and cooperation
among processes, distributed consensus and agreement, and leader election
and clock synchronization. Also discussed are static and dynamic algorithms,
fault tolerance, and uses of randomization. J. Simon. Winter.
385. Introductory Theory of Computing. PQ: Consent of instructor.
An upper-level survey of computability and complexity theory designed
for first-year graduate students. L. Fortnow, Staff. Autumn.
386. Complexity Theory A. PQ: Consent of instructor. Topics in
computational complexity theory with an emphasis on machine-based complexity
classes. Staff. Winter.
387. Complexity Theory B. PQ: Consent of instructor. Topics in
computational complexity theory with an emphasis on combinatorial problems
in complexity. Staff. Winter.
390. Computational Geometry. PQ: Consent of instructor. A seminar
on topics in computational geometry. K. Mulmuley. Autumn.
395. Logic and Databases. PQ: Consent of instructor. A seminar
covering the latest research into logic and its role in databases. T.
Gaasterland. Winter.
396. Topics in Theory. PQ: Consent of instructor. A seminar
in current research topics in computing theory. Staff. Autumn, Winter,
Spring.
398. Readings in Computer Science.
PQ: Consent of instructor and approval of departmental counselor.
Open to both concentrators and nonconcentrators; students are required to
submit the College Reading and Research Course Form. Supervised readings
in computer science. A project or written report is often required. Staff.
Summer, Autumn, Winter, Spring.
Go to top of document