Computer Science Curriculum

  • EECS 322 - Compiler Construction

    CATALOG DESCRIPTION:The compiler is the programmer's primary tool. Understanding the compiler is therefore critical for programmers, even if they never build one. Furthermore, many design techniques that emerged in the context of compilers are useful for a range of other application areas. This course introduces students to the essential elements of building a compiler: parsing, context-sensitive property checking, code linearization, register allocation, etc. To take this course, students are expected to already understand how programming languages behave, to a fairly detailed degree. The material in the course builds on that knowledge via a series of semantics preserving transformations that start with a fairly high-level programming language and culminate in machine code.

    • This course satisfies the project requirement.

     

  • EECS 330 - Human Computer Interaction

    CATALOG DESCRIPTION: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. 

    • This course satisfies the CS Project Course, CS Breadth: Interfaces, and CD Depth: Interfaces requirements.
  • EECS 337 - Introduction to Semantic Information Processing

    CATALOG DESCRIPTION: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, counter-planning, and thematic structures.

    • This course satisfies the project requirement 
  • EECS 338 - Practicum in Intelligent Information Systems

    CATALOG DESCRIPTION: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.

    • This course satisfies the project requirement.
  • EECS 339 - Introduction to Databases

    CATALOG DESCRIPTION: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.

    • This course satisfies the project requirement. 
  • EECS 340 - Introduction to Computer Networking

    CATALOG DESCRIPTION:A top-down exploration of networking using the 5-layer model and the 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 , wireless networks, and network security. Over the course of the quarter, students build web clients and servers, a fully compatible TCP/IP stack that can run them, and evaluate routing protocols in simulation.

    • This course satisfies the project requirement.
  • EECS 343 - Operating Systems

    CATALOG DESCRIPTION:A fundamental overview of operating systems. Topics covered include: Operating system structures, processes, process synchronization, deadlocks, CPU scheduling, memory management, file systems, secondary storage management. Requires substantial programming projects.

    • Approved for Systems Breadth and Depth in the CS curriculum in McCormick and Weinberg
    • This course satisfies the project requirement. 
  • EECS 344 - Design of Computer Problem Solvers

    CATALOG DESCRIPTION:Principles and practice of organizing and building AI reasoning systems. Topics include pattern-directed rule systems, truth-maintenance systems, and constraint languages.

    • This course satisfies the project requirement. 
  • EECS 345 - Distributed Systems

    CATALOG DESCRIPTION: Basic principles behind distributed systems (collections of independent components that appear to users as a single coherent system) and main paradigms used to organize them. 

    • This course satisfies the project requirement
  • EECS 350 - Introduction to Computer Security

    CATALOG DESCRIPTION:The past decade has seen an explosion in the concern for the security of information. This course introduces students to the basic principles and practices of computer and information security. Focus will be on the software, operating system and network security techniques with detailed analysis of real-world examples. Topics include cryptography, authentication, software and operating system security (e.g., buffer overflow), Internet vulnerability (DoS attacks, viruses/worms, etc.), intrusion detection systems, firewalls, VPN, Web and wireless security. Students with good performance in the class will be awarded researchship in the academic year and/or the summer. This course can help satisfy the project course requirement for undergraduates and satisfy the breadth requirement in computer systems for system Ph.D. students.

    • This course satisfies the project requirement
  • EECS 351 - Introduction to Computer Graphics

    CATALOG DESCRIPTION:First in a 3-course series to teach fundamental ideas underlying all forms of computer-assisted picture-making. Teaches you to write simple programs that make collections of interactive 2D/3D shapes with simple lighting and textured surfaces. You will learn by doing, with four projects that teach: 1) Shape descriptions; points, lines, polys, and trees of transformations; 2) Viewing: how to make a 3D camera that computes a picture 3) lighting and shading; 4) textures and buffer tricks. We will use 'WebGL' to write 3D graphics programs that run in HTML-5 browsers such as Chrome. We will learn GLSL to write shaders in OpenGL (DirectX is similar), with brief surveys of advanced topics.

    • This course satisfies the project requirement.
  • EECS 352 - Machine Perception of Music & Audio

    CATALOG DESCRIPTION: Machine extraction of musical structure in audio, MIDI and score files, covering areas such as source separation and perceptual mapping of audio to machine-quantifiable measures.

    • This course satisfies the project requirement 
  • EECS 354 - Network Penetration and Security

    CATALOG DESCRIPTION:This RTFM course will focus on remote computer penetration (hacking). The class will introduce basic theory for many different types of attacks and then actually carry them out in ’real-world’ settings. The goal is to learn security by learning how to view your machine as a ’hacker.’ In addition, we will be preparing for the 2007 International Capture the Flag Competition (held each December by UCSB). Capture the Flag is a network security exercise where the goal is to exploit other machines while defending your own.

    • This course satisfies the project requirement.
  • EECS 370 - Computer Game Design

    CATALOG DESCRIPTION: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.

    • This course satisfies the project requirement
  • EECS 371 - Knowledge Representation and Reasoning

    COURSE DESCRIPTION: Principles and practices of knowledge representation, including logics, ontologies, common sense knowledge, and semantic web technologies.

    • Prerequisite: 348, 325, or equivalent experience with artificial intelligence.
    • This course satisfies the project requirement. 
  • EECS 372/472 - Designing and Constructing Models with Multi-Agent Languages

    CATALOG DESCRIPTION: This course focuses on the exploration, construction and analysis of multi-agent models. Sample models from a variety of content domains are explored and analyzed. Spatial and network topologies are introduced. The prominent agent-based frameworks are covered as well as methodology for replicating, verifying and validating agent-based models. We use state of the art ABM and complexity science tools. This course can help satisfy the project course and artificial intelligence area course requirement for CS and CIS majors, and satisfy the breadth requirement in artificial intelligence for Ph.D. students in CS. It also satisfies a design course requirement for Learning Sciences graduate students, counts towards the Cognitive Science specialization and as an advanced elective for the Cognitive Science major.

  • EECS 394 - Software Project Management

    CATALOG DESCRIPTION:EECS 394 is focused on the process of software development from the perspective of both rapid prototyping and responsive relationships with clients.  We’ll take an Extreme Programming approach in which teams will maintain tight, iterative development cycles that include ongoing interactions with clients.  In the style of EDC, the class is project oriented, with teams focused on specific projects during the entire 10 week period.  The class also has a studio feel, with team interactions during class guided by faculty and graduate students.
    Instructor's Course Home Page

  • EECS 395 - Game Development Studio

    CATALOG DESCRIPTION: In this course, students will design and develop 3D game games using the Unity engine and the agile scrum development methodology.  The focus will be on project work, both software development (programming) and iterative design, however lecture material will also be included on game architecture and the MDA framework.  
     (This course was formerly known as "EECS-395/495 Real-Time 3D Game Engine Design")

    • This course satisfies the project requirement; Interfaces (breadth or depth); software development (breadth)
  • EECS 395/495 - (Special Topics) Innovation in Journalism & Technology

    CATALOG DESCRIPTION: This is a joint projects class with Medill in conjunction with the newly announced Knight News Innovation Lab at Northwestern.  McCormick students (primarily CS and CE majors) and journalism students will join cross-functional teams to assess and develop, from both an audience/market perspective and a technology perspective, a range of technology projects with the ultimate goal of deployment for impact in media and journalism.  Some projects may continue over the summer if students are interested.

    • This course fulfills the AI depth, Interfaces depth & Project Course requirement.
  • EECS 395/495 - Computational Photography Seminar

    COURSE DESCRIPTION:This course is second in a two-part series that explores the emerging new field of Computational Photography.Computational photography combines ideas in computer vision, computer graphics, and image processing to overcome limitations in image quality such as resolution, dynamic range, and defocus/motion blur. This course will first cover state-of-the-art topics in computational photography such as motion/defocus deblurring cameras, light field cameras, computational displays, and much more!

    Instructor's Course Home Page

  • EECS 395/495 - Intermediate Computer Graphics

    CATALOG DESCRIPTION: (to become CS351-2) Second in a 3-course series on the methods and theory of computer graphics, this project-oriented course explores how to describe shapes, movement, and lighting effects beyond the abilities of the standard OpenGL rendering pipeline. It includes interactive particle systems, simple rigid-body dynamics, explicit and implicit dynamics solvers (suitable for smoke, simple fluids and cloth) and an introduction to ray tracing (chrome, glass, and diffraction) with a few basic ideas for global illumination.

    • This course satisfies the project requirement.
    Instructor's PDF
  • EECS 395/495 - Online Advertising: A Systems Approach

    CATALOG DESCRIPTION: This course will cover a broad range of topics related to online advertising on the web, mobile, search-engines, and online social networks. Example topics include online advertising architectures, click frauds and malicious advertising, privacy-preserving online advertising, measuring and predicting the effects of online advertising, behavioral and contextual advertising, and more.

  • EECS 397 - Introduction to Real-time Sytems

    CATALOG DESCRIPTION: 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.

    • This course satisfies the project requirement
    Instructor's Course Home Page
  • EECS 399 - Independent Study

    CATALOG DESCRIPTION:Independent Study (can be taken multiple times)
     

    • Approved for Systems Breadth and Depth in the CS curriculum in McCormick and Weinberg
    • This course satisfies the project requirement. 
  • EECS 441 - Resource Virtualization

    CATALOG DESCRIPTION:  The bulk of the time in this class examining a virtual machine monitor (VMM) in depth, at the source code level.  The course explains the hardware/software interface of a modern x86 computer in detail.   A VMM is an operating system that is implemented directly on top of the hardware interface, and itself presents a hardware interface to higher-level software.  Students will also acquire valuable kernel development skills.
    Prof. Dinda's EECS 441 course page

    • This course satisfies the project requirement
  • EECS 443 - Advanced Operating Systems

    CATALOG DESCRIPTION:Advanced operating systems. Topics covered include:

    • Approved for Systems Breadth and Depth in the CS curriculum in McCormick and Weinberg
    • This course satisfies the project requirement. 
  • EECS 450 - Internet Security

    CATALOG DESCRIPTION: Cybercrime has exploded over the last decade. In this course, we will start with the basic concepts of network security, then focus on security challenges of network and distributed systems as well as the counter-attack approaches.

    • Approved for Security Depth and Systems Breadth and Depth in the CS curriculum in McCormick and Weinberg
    • This course satisfies the project requirement. 
    Click to see the instructor's course page.