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.


CS100A Introduction to Computer Programming

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.

CS100B Introduction to Computer Programming

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.

CS113 Introduction to C

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.

CS114 UNIX Tools

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.

CS130 Creating Web Documents

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.

CS211 Computers and Programming

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.

CS212 Structure and Interpretation of Computer Programs

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.

CS213 C++ Programming

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.

CS280 Discrete Structures

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.

CS314 Introduction to Digital Systems and Computer Organization

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.

CS381 Introduction to Theory of Computing

An introduction to modern theory of computing: automata theory, formal languages, and effective computability.

CS410 Data Structures

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.

CS432 Introduction to Database Systems

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.

CS444 Distributed Systems and Algorithms

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.

CS472 Foundations of Artificial Intelligence

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.

CS473 Practicum in Artificial Intelligence

Project portion of COM S 472. Topics include Common LISP programming, representation systems, deductive retrieval, databases and frame languages, and truth-maintenance-system implementations.

CS481 Introduction to Theory of Computing

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.

CS501 Software Engineering: Technology and Technique

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.

CS519 Engineering Computer Networks

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.

CS601 System Concepts

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.

CS611 Advanced Programming Languages

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.

CS621 Matrix Computations

Stable and efficient algorithms for linear equations, least squares, and eigenvalue problems. Direct and iterative methods are considered. The Matlab system is used extensively.

CS681 Design and Analysis of Algorithms

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.

CS701 File System Seminar

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.

CS709 Colloquium

A weekly seminar in which various topics pertaining to the field of computing are discussed.

CS754 Systems Research Seminar

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.

CS787 3d Structure in Chemistry and Molecular Biology

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.

CS789 Theory Seminar

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