Course Home Pages - Spring 1997


These are links to the home pages for a number of CS courses for Spring 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.

CS100 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 C. 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.

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

An introduction to programming languages and computer science. Topics covered include functional programming (including recursive and higher-order functions), object-oriented programming, analysis and understanding of algorithms, and correctness of programs. Several substantial sized programming projects are done using Dylan, a dynamic object-oriented programming language. The aim of the course is to expose students to a wide range of interesting and challenging concepts in computing, using programming as a tool.

CS222 Introduction to Scientific Computation

An introduction to elementary numerical analysis and scientific computation. Topics include interpolation, quadrature, linear and nonlinear equation solving, least-squares fitting, and ordinary differential equations. The Matlab computing environment is used. Vectorization, efficiency, reliability, and stability are stressed.

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

Web course material includes course info, lecture notes, homeworks, project info, and hopefully even lecture videos.
Topics covered in the course include: representation of information; machine/assembly languages, in particular PowerPC; processor organization; interrupts and I/O; memory hierarchies; combinatorial and sequential circuits; data path and control unit design; RTL; and microprogramming.

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.

CS412 Introduction to Compilers and Translators

Overview of the internal structure of modern compilers, with emphasis on implementation techniques. Topics covered include lexical scanning, simple parsing techniques, symbol-table manipulation, type-checking routines, code generation, and simple optimizations. The course entails a compiler implementation project.

CS417 Computer Graphics and Visualization (ARCH 374)

An introduction to the principles of interactive computer graphics and scientific visualization. Topics include surface modeling, animation, perspective transformations, hidden-line and hidden-surface algorithms, lighting models, image synthesis, and application to scientific data analysis.

CS418 Practicum in Computer Graphics (ARCH 375)

Programming assignments dealing with interactive computer graphics and visualization of scientific data.

CS422/522 Software Tools for Computational Science

The objective is to expose students to some of the exciting and important software tools of computational science today with plenty of historical and scientific context. Problem-solving environments, symbolic computing, scientific software libraries, scientific visualization, parallel computing, program transformations, web-based computing are discussed along with appropriate scientific and mathematical examples.

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.

CS482 Introduction to Analysis of Algorithms

Techniques used in the creation and analysis of algorithms. Combinatorial algorithms, computational complexity, NP-completeness, and intractable problems.

CS486 Applied Logic (also Mathematics 486)

Propositional and predicate logic, compactness and completeness by tableaux, natural deduction, and resolution. Equational logic. Herbrand Universes and unification. Rewrite rules and equational logic, Knuth-Bendix method and the congruence-closure algorithm and l-calculus reduction strategies. Topics in Prolog, LISP, ML, or Nuprl. Applications to expert systems and program verification.

CS514 Practical in Distributed Systems

Practical issues in designing and implementing distributed software. Topics include local and wide-area network protocols, replicated data, dynamic reconfiguration, monitoring for and reacting to failures or recoveries, distributed computation, synchronization, and techniques for expressing coarse-grained parallelism at the application level.

CS614 Advanced Systems

An advanced course in systems, emphasizing contemporary research in distributed systems. Topics may include communication mechanisms, consistency in distributed systems, fault-tolerance, knowledge and knowledge-based protocols, performance, scheduling, concurrency control, and authentication and security issues.

CS622 Numerical Optimization and Nonlinear Algebraic Equations

The study of modern practical algorithms for the solution of continuous optimization problems, with emphasis on large-scale problems.

CS664 Machine Vision

An introduction to computer vision. Topics include: edge detection, stereopsis, motion and optical flow, and extracting shape from images. Students will implement several of the algorithms covered in the course, in addition to a research project.

CS682 Theory of Computing

Advanced treatment of theory of computation, computational-complexity theory, and other topics in computing theory.

CS706 Ph.D. Professional Practice Seminar

Our goal in the seminar is to discuss the pragmatics of life after you receive a Ph.D. -- both in industrial research and academia. Faculty and research staff have been encouraged to attend, so a broad set of perspectives should be represented.

CS712 Performance-Enhancing Program Transformations

Sophisticated program transformations are required to get programs to run well on modern machines because of the large semantic gap between high-level languages and machine architectures. The objective of this course is to study and implement some of these technologies. Our examples will come from a variety of disciplines including computational science, functional programming, and program synthesis from high-level specifications.

CS717 Topics In Language Based Security and
CS719 Seminar in Programming Language Implementation

CS717 and CS719 have been merged due to the large overlap between the topics. See the web page for details.
CS717 started as a seminar for the discussion of advanced papers on implementing protection domains and security features in general using the language system (compiler/run-time) instead of the more traditional hardware facilities used in current operating systems.
CS719 proposes to survey current research in advanced language implementation including, but not limited to: garbage collection, type-based compilation, secure binaries, partial evaluation, run-time code generation, and functional representations for imperative features (e.g., state, I/O, and concurrency.)

CS732 Seminar in Database Systems

Covers advanced topics in database systems. A special area of focus is chosen every semester. The course involves reading and presenting research papers, and developing a research project.

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. Course work from Fall 1994, Spring 1995, Summer 1995, and Fall 1995 have been archived inside the firewall to clear off space for current Web items.
Spring 1996
Summer 1996
Fall 1996