Course Home Pages - Fall 1997
These are links to the home pages for a number of CS courses
for Fall 1997. In many cases there are class notes, problem sets,
and other course information available, although they may be
available only to registered members of the course.
Course Home Pages for some courses taught during previous
semesters can be found using the links at the bottom of this
page.
-
- An introduction to elementary computer programming
concepts. Emphasis is on techniques of problem analysis
and the development of algorithms and programs. The
subject of the course is programming, not a particular
programming language. The principal programming language
is Java. The course does not presume previous programming
experience. Programming assignments are tested and run on
interactive, stand-alone microcomputers.
Standard
version of COM S 100. No college-level mathematics is
assumed.
-
- An introduction to elementary computer programming
concepts. Emphasis is on techniques of problem analysis
and the development of algorithms and programs. The
subject of the course is programming, not a particular
programming language. The principal programming language
is Java. The course does not presume previous programming
experience. Programming assignments are tested and run on
interactive, stand-alone microcomputers.
Standard
version of COM S 100. No college-level mathematics is
assumed.
-
- This course provides a brief introduction to C for
students with experience programming in another language
at the CS100 level. We will cover topics such as basic C
syntax, flow control constructs, functions, pointers,
arrays, structures, and standard libraries.
-
- An introduction to Unix, including shell commands, emacs,
the file system, and software tools like grep, find,
make, awk, and perf. Knowledge of some programming
language like Java, C, C++, Pascal, or Fortran is
expected, but projects will not assume expertise in any
particular language.
-
-
Interactive on-line media such as the World Wide Web are
revolutionizing the way we communicate. This course introduces
students with little or no computer background to tools and
techniques for creating interactive documents. Topics covered
will include HTML authoring, scripting languages, interaction
techniques, data mining, and incorporating sound, video, and
images in documents.
-
- Intermediate programming in a high-level language and
introduction to computer science. Topics include program
structure and organization, modules (classes), program
development, proofs of program correctness, recursion,
data structures and types (lists, stacks, queues, trees),
object-oriented and functional programming, and analysis
of algorithms. C++ is the principal programming language.
-
- A challenging introduction to programming languages and
computer science that emphasizes alternative modes of
algorithmic expression. Topics include recursive and
higher-order procedures, performance analysis of
algorithms, proofs of program correctness, probabilistic
algorithms, symbolic hierarchical data, abstract data
types, polymorphic functions, object-oriented
programming, infinite data types, simulation, and the
interpretation of programs.
-
- This course provides an introduction to the C++ language
for students with experience programming in another
language at the CS100 level. We will cover topics such as
classes, inheritance, memory allocation, templates, and
the standard library.
-
-
Covers mathematical aspects of programming and computing. Topics will be
chosen from the following: mathematical induction; logical proof;
propositional and predicate calculus; combinatorics and discrete
mathematics covering manipulation of sums, recurrence relations, and
generating-function techniques; basic number theory; sets, functions, and
relations; partially ordered sets; graphs.
-
- A.k.a "Build a computer in three months"!
Introduction to computer organization. Topics include
representation of information, machine and assembly
languages, processor organization, input/output devices,
memory hierarchies, combinatorial and sequential
circuits, data path and control unit design, and RISC
pipelining. The course features several major projects,
including a full RISC processor design.
-
- An introduction to modern theory of computing: automata
theory, formal languages, and effective computability.
-
- Lists, trees, graphs, arrays, and other forms of data
structure and their implementation. Relationship between
language and data structure, emphasizing abstract data
types. Dynamic storage allocation and memory management.
Detailed study of searching and sorting methods. Analysis
to determine the more efficient algorithm in a given
situation.
-
- Introduction to modern database management systems.
Concepts in data modeling and query processing. Storage
structures and access methods. Design and analysis of
relational databases. Concurrency control.
Object-oriented databases.
-
-
This course covers the fundamentals of distributed computing.
We focus on problems, methodologies and paradigms necessary
to the understanding and design of distributed algorithms,
with an emphasis on fault-tolerance. Theoretical concepts will
be complemented with practical examples of their application.
-
- A challenging introduction to the major subareas and
current research directions in artificial intelligence.
Topics include knowledge representation, heuristic
search, problem solving, natural-language processing,
game-playing, logic and deduction, planning, and machine
learning.
-
- Project portion of COM S 472. Topics include Common LISP
programming, representation systems, deductive retrieval,
databases and frame languages, and
truth-maintenance-system implementations.
-
- Fall. 4 credits. Prerequisite: COM S 280 or permission of
instructor. Credit will not be granted for both COM S 381
and COM S 481. Corrective transfers between COM S 481 and
COM S 381 (in either direction) are encouraged during the
first few weeks of instruction.
-
- An introduction to the problems of building large,
reliable software systems and the methods, langauges, and
tools used in modern software development. Topics include
software life-cycle models, software analysis and design,
verification and validation, reliability, engineering
ethics and professionalism. Programming topics include
modularity, data abstraction, object-oriented
programming, and the effective use of C++. General
techniques will be complemented with programming
experience using industrial-strength languages and tools.
-
-
This course will take an engineering approach to designing and building
networks, emphasizing not only how things work, but also why.
Most of the course will be devoted to studying a set of tools and techniques
that will then be applied to practical networking problems at each of the
ISO protocol layers. I will draw on examples from the Internet, ATM networks,
and the telephone network. Students will carry out programming assignments
on the Internet, and using the REAL
packet-level simulator.
-
- This course teaches broadly applicable principles of
computing system design and analysis. For example, the
principle of locality of reference used in caching,
virtual memory, and network service hints. Such broadly
applicable abstractions will be discussed along with
their implementations in a variety of settings. Case
studies from the systems literature will be employed
throughout.
Note: This site is only available for
viewing inside the CU Computer Science firewall.
-
- A study of programming paradigms: functional, imperative,
concurrent and logic programming. Models of programming
languages, including the lambda calculus. Type systems,
polymorphism, modules, and other object-oriented
constructs. Program transformations, programming logic,
and applications to programming methodology.
-
- Stable and efficient algorithms for linear equations,
least squares, and eigenvalue problems. Direct and
iterative methods are considered. The Matlab system is
used extensively.
-
- Methodology for developing efficient algorithms,
primarily for discrete problems. Coverage of both basic
and current issues in algorithm design, including the
efficient implementation of fundamental graphs algorithms
and data structures, NP-completeness, randomized
algorithms, and approximation algorithms.
-
- For most users, the file system is the most visible
aspect of the operating system. By many it is perceived
as the crucial component in the overall performance of a
system. In this seminar we will study the evolution in
the design of specific file systems and investigate the
issues that are of importance for the performance of
modern file systems.
-
-
A weekly seminar in which various topics pertaining to the
field of computing are discussed.
-
- Once a week students and faculty meet for a presentation
on hot new systems research, followed by a round table
discussion of the work and issues presented.
-
-
A study of algorithmic techniques for computational
problems in chemistry and molecular biology.
The emphasis will be on computational geometry and
issues related to three-dimensional structures.
-
-
An informal weekly seminar in which various topics pertaining to the
theory of computing are discussed.
Information from previous semesters
Information from previous semesters may be retained for a
while, but don't be surprised if certain links don't work. Older
sites have been archived inside the firewall to clear off space
for current Web items.
- Summer
1996
- Fall 1996
- Spring
1997
- Summer
1997