|
|
|
|
 |
|
|
|
Course Descriptions
Course schedules are available for the following academic years:
For a summary of the prerequisites for all CS courses, see the
Prerequisites Tree.
For individual CS 395/495 course web pages (1 per section, where provided),
see the
Special Topics - Course Offerings page(s)
- 725-110-0 Introduction to Computer Programming
- Introduction to programming practice using a modern programming language. Analysis and
formulation of problems for computer solution. Systematic design, construction, and
testing of programs. Substantial programming assignments.
- Prerequisites: None
- Prerequisite for: 730-205, 730-230
-
- 725-111-0 Fundamentals of Computer Programming
- Introduction to principles of programming and procedural thinking. Procedural
abstraction, data abstraction, modularity, object-oriented programming. Uses computer
facilities and the Scheme programming language. Substantial programming assignments,
including numerical and symbolic programs. Required for computer science majors.
- Prerequisites: None
- Prerequisite for: 725-211
-
- 725-120-0 Introduction to Computer and Information Technology
- ** Not currently offered **
-
- 725-130-0 Tools and Technology of the World Wide Web
- Introduction to the theory and practice of developing sites on and technology for the
World Wide Web. It will cover the basics of HTML, JavaScript, ASP, and CGI programming.
- Prerequisites: None
- Course Director: Kristian Hammond
-
- 725-211-0 Fundamentals of Computer Programming II
- Continuation of 111. Key concepts in software design and systems programming.
Object-oriented programming (in C++), design of interpreters and compilers, and register
machines. Required for computer science majors.
- Prerequisites: 725-111
- Prerequisite for: 725-311
-
- 725-213-0 Introduction
to Computer Systems
- This course has four purposes: (1) to learn about the
hierarchy of abstractions and implementations that comprise a modern computer
system; (2) to demystify the machine and the tools that we use to program it;
(3) to come up to speed on systems programming in C in the Unix environment; (4)
to prepare students for upper-level systems courses.
- Prerequisites: 725-211 or 727-230
- Course Director: Peter Dinda
-
-
725-310-0 Mathematical Foundations of Computer Science
- Basic concepts of finite and structural mathematics. Sets, axiomatic systems, the
propositional and predicate calculi, and graph theory. Application to computer science:
sequential machines, formal grammars, and software design.
- Prerequisites: 725-110 or 725-111 and 435-214-3
- Prerequisite for: 725-322, 725-332, 725-339, 725-343, 725-351
-
- 725-311-0 Data Structures and Data Management
- The design, implementation, and analysis of abstract data types, data structures and
their algorithms. Topics include: data and procedural abstraction, linked lists, stacks,
queues, binary trees, searching, and sorting. Required for computer science majors.
- Prerequisites: 725-211 or 727-230
- Prerequisite for: 725-322, 725-332, 725-339, 725-343, 725-351
-
- 725-317-0 Data Management and Information Processing
- Data models and database design. Modeling the real world: structures, constraints, and
operations. The entity relationship to data modeling (including network hierarchical and
object-oriented), emphasis on the relational model. Use of existing database systems for
the implementation of information systems. Note:
This course is only for IE/MFE students - CS/CIS students are
not allowed to register for this course, and it does not carry
credit towards the CS/CIS major.
- Prerequisites: 725-110, 725-111, or programming experience
- Course Director: TBA
-
- 725-322-0 Compiler Construction
- Introduction to compiler construction. Lexical analysis and parsing. Syntax-directed
translation. Intermediate code generation. Machine-code generation. Optimization. Run-time
organization.
- Prerequisites: 725-311
- Course Director: Brian Dennis
-
- 725-325-0 Artificial Intelligence Programming
- Introduction to Lisp and programming knowledge-based systems and interfaces. Strong
emphasis on writing maintainable, extensible systems. Topics include: semantic networks,
frames, pattern matching, deductive inference rules, case-based reasoning, discrimination
trees. Project-driven. Substantial programming assignments.
- Prerequisites: 725-110, 725-111, or programming experience
- Prerequisite for: 725-344
- Course Director: Christopher Riesbeck
-
-
725-330-0 Human Computer Interaction
- Introduction to human-computer interaction and the design of systems that work
for people and their organizations. The goal is to understand the manner
in which humans interact with, and use, their computers for productive
work. The course focus is on the interface as designed artifact. The
interface is a design problem without a single "correct" solution but
which has many "good" solutions and a plethora of "bad"
solutions. Class discussion centers on what makes an interface good and
proven techniques for designing interfaces that meet human needs.
- Prerequisites: prior programming experience
- Course Director: Louis Gomez, Ben Watson
-
-
725-336-0 Design and Analysis of Algorithms
- Analysis techniques: solving recurrence equations. Algorithm design techniques: divide
and conquer, the greedy method, backtracking, branch-and-bound, and dynamic programming.
Sorting and selection algorithms, order statistics, heaps, and priority queues.
- Prerequisites: 725-310 and 725-311 or consent of instructor
-
- 725-337-0 Introduction to Semantic Information Processing
- A semantics-oriented introduction to natural language processing, broadly construed.
Representation of meaning and knowledge inference in story understanding, script/frame
theory, plans and plan recognition, counterplanning, and thematic structures.
- Prerequisites: 725-348 or consent of instructor
- Course Director: Larry Birnbaum
-
- 725-338-0 Practicum In Intelligent Information Systems
- A practical excursion into the building of Intelligent Information Systems.
Each student will develop a working program in the area of information
access, management, capture, or retrieval. Project definition,
data collection, technology selection, implementation, and project
management. Semantics-oriented introduction to natural language processing, broadly construed.
Representation of meaning and knowledge inference in story understanding, script/frame
theory, plans and plan recognition, counter-planning, and thematic structures.
- Prerequisites: n/a
- Prerequisite for: n/a
- Course Director: Larry Birnbaum and Kris Hammond
-
- 725-339-0 Introduction to Database Systems
- Data models and database design. Modeling the real world: structures, constraints, and
operations. The entity relationship to data modeling (including network hierarchical and
object-oriented), emphasis on the relational model. Use of existing database systems for
the implementation of information systems.
- Prerequisites: 725-213 and 725-311
- Prerequisite for: 725-464
- Course Director: Peter Dinda
-
- 725-340-0
Introduction to Networking
- A top-down exploration of networking using the 5 layer model and TCP/IP
stack. HTTP, FTP, DNS, BSD Sockets, concurrent servers, checksums, reliable
transport with stop-and-wait, go-back-n, selective repeat, flow control,
congestion control, TCP, unicast routing, multicast routing, router
architecture, IP, IPv6, IP multicast, MAC protocols and LANs, Ethernet, ATM,
bit-encoding, and wires. Over the course of the quarter, students build web
clients and servers, and a fully compatible TCP/IP stack that can run them.
- Prerequisites: 725-213 and 725-311
- Course Director: Yan Chen, Peter Dinda, and Alexandar Kuzmanovic
-
- 725-343-0 Operating Systems
- Fundamental overview of operating systems. First Quarter: Operating system structures,
processes, process synchronization, deadlocks, cpu
scheduling, memory management, file systems, secondary storage
management. Requires substantial programming projects.
- Prerequisites: 725-311 and either 725-213 or ECE 205 and ECE 231
- Prerequisite for: Many 395 offerings
- Course Director: Fabian Bustamante
-
- 725-344-0 Design of Computer Problem Solvers
- Principles and practice of organizing and building AI reasoning systems. Topics include
pattern-directed rule systems, truth-maintenance systems, and constraint languages.
- Prerequisites: 725-348 and 725-325-1 or equivalent Lisp experience
- Course Director: Kenneth Forbus
-
- 725-345-0 Distributed Systems
- This course addresses some of the basic principles behind distributed systems (collection of independent components that appear to the users as a single coherent system) and reviews some of the main paradigms used to organize them.
- Prerequisites: 725-340 and 725-343 or permission of instructor
- Course Director: Fabian Bustamante
-
- 725-348-0 Introduction to Artificial Intelligence
- Core techniques and applications of artificial intelligence. Representation retrieving
and application of knowledge for problem solving. Hypothesis exploration, theorem proving,
vision and neural networks.
- Prerequisites: 725-325-1, 725-111, or Lisp programming experience
- Prerequisite for: 725-337, 735-344
- Course Director: Lawrence Birnbaum
-
-
725-351-0 Introduction to Computer Graphics
- Mathematical software and hardware requirements for computer graphics systems. Data
structures and programming languages. Random displays. Graphic applications.
- Prerequisites: 725-311
- Course Director: Jack Tumblin
-
- 725-360-0 Designing & Constructing Models With Multi-Agent Languages
- This is a hands-on projects course. All students will design and implement multi-agent models in the NetLogo language. Students will design and implement several NetLogo projects focusing on the affordances of multi-agent models and analyzing their behavioral regimes.
- Prerequisites: None
-
- 725-370-0 Computer Game Design
- Fundamentals of computer game design. Topics include: Plot,
narrative and character, simulation for creating game worlds, AI for
synthetic characters, tuning game play. Substantial programming and
project work.
- Prerequisites: 725-311, plus at least one of 725-322,
725-343, 725-348, or 725-351
- Course Director: Kenneth Forbus
-
- 725-394-1,2 Software Project Management and Development
- Software development methodologies, object-oriented analysis and design, CASE tools,
software life cycle. Project management tools, programming teams. Executable
specifications, automatic test generation.
- Prerequisites: 725-343-1 or equivalent programming experience
-
- 725-395/495-0 Special Topics in Computer Science
- Topics suggested by students or faculty, with approval of the department.
-
- 725-399-0 Projects
- Seminar and projects for advanced undergraduates on subjects of current interest in computer science.
-
- 725-430-0 Design of Interactive Learning Environments
- This course is about the design of computer-based learning-by-doing
environments. It focuses primarily on the initial conception of an
environment more than the technical issues involved in building
these environments. In this course you will go through the
conceptual design process for a number of different learning
environments.
- Prerequisites: LSCI 403 and 425 are recommended
-
- 725-437-1,2 Design of Educational Software Environments
- Discourse planning, generation,
and advanced problems in NLP, the role of memory in understanding and
learning: remindings, expectation failures, memory organization, and thematic structures.
-
- 725-441 Resource Virtualization
- Virtual machines of all kinds, virtual networking, virtual services, virtual storage, emulation, distributed computing using virtualized resources.
- Prerequisites: (CS 343 and CS 340) or consent of instructor. Undergraduates welcome.
- Course Director: Peter Dinda
-
- 725-442 Dynamic Behavior Of Applications, Hosts, and Networks
- Workload characterizion; measuring, analyzing, modeling, and predicting the dynamic behavior of distributed computing environments and their applications.
- Prerequisites: (CS 343 and CS 340) or consent of instructor. Undergraduates welcome.
- Course Director: Peter Dinda
-
- 725-443 Advanced Operating Systems
- Advanced concepts in operating systems and distributed computing, covering a wide range of research topics from historical perspectives to current themes such as peer-to-peer computing and mobile systems.
- Prerequisites: 725-343 or permission of instructor
- Course Director: Fabian Bustamante
-
- 725-450 Internet Security
- Through measurement-based approaches, students will analyze the complexity of the Internet, and develop countermeasure against various vulnerabilities of the Internet, e.g., viruses, worms, denial of service attacks, and more.
- Prerequisites: 725-340 or permission of instructor
- Course Director: Yan Chen
-
- 725-464 Advanced Database Systems
- This class focuses on the implementation of database management systems: file layout,
indexing, query optimization and processing, concurrency control, disaster recovery and
transaction management.
- Prerequisites: 725-311 and 339 or permission of instructor
-
- 725-499 Projects
- Special projects carried out under faculty direction. Permission of instructor and
department required.
-
- 725-510 Seminar
- Seminar on topics of current interest.
- Winter 99: Knowledge Representation
-
- 725-590 Research
- Independent investigation of selected problems pertaining to thesis or dissertation. May be repeated for credit.
-
-
- ECE 397 Introduction to Real-time Systems
- Theory, design, and implementation of real-time systems, i.e., special-purpose computers that guarantee certain tasks will be completed by certain times. Use of real-time operating systems.
- Prerequisites: CS 343 or consent of instructor
- Course Directors: Robert Dick (ECE) and Peter Dinda (CS)
-
Read more about the opportunities for Cognitive Science
interdisciplinary program in the Department of Psychology.
|
© 2003,2004 Department of Computer Science, Northwestern University. All Rights Reserved.
Send questions and comments to webmaster@cs.northwestern.edu.
|