May 04, 2024  
Catalogue 2015-2016 
    
Catalogue 2015-2016 [ARCHIVED CATALOG]

Computer Science Department


Chair: Marc L. Smith;

Professor: Nancy M. Ide, Luke Hunsberger;

Associate Professors: Thomas Ellman,  Marc L. Smith, Jennifer Walter;

Assistant Professor: Jason Waterman;

Visiting Assistant Professor: Eric Aaron;

Adjunct Assistant Professor: Barry Jones, Peter Lemieszewski.

 

Advanced Placement: Students eligible for Advanced Placement may be able to bypass CMPU 101  or CMPU 102  with permission of the department. A bypassed course cannot be counted toward the 13-unit requirement for the Computer Science concentration or the 6-unit requirement for the Computer Science correlate.

Departmental Honors : A GPA of 3.5 or higher in the 200-level and 300-level courses within the major, and a GPA of 3.3 or higher overall, and nomination by the Computer Science faculty are required for departmental honors.

Non-Majors: Students majoring in the sciences are advised to complete CMPU 101 , CMPU 102 , and CMPU 145 , or to complete a correlate sequence in Computer Science.

Programs

Major

Correlate Sequence in Computer Science

Courses

Computer Science: I. Introductory

  • CMPU 101 - Computer Science I: Problem-Solving and Abstraction

    Semester Offered: Fall and Spring
    1 unit(s)
    Introduces the fundamentals of computer science by describing the functional styles of programming, examining basic sequential and recursive algorithms, and studying linear data structures including arrays and linear collection classes such as vectors, stacks, queues, and lists. Discusses elementary programming patterns. Presents techniques for the creation of simple graphical user interfaces. Applies these ideas to sample applications that illustrate the breadth of computer science. A weekly laboratory period provides guided hands-on experience.

    Open to all classes.

    Two 75-minute periods plus laboratory.
  • CMPU 102 - Computer Science II: Data Structures and Algorithms

    Semester Offered: Fall and Spring
    1 unit(s)


    Continues CMPU 101 . Examines object-oriented programming and associated algorithms using more complex data structures as the focus. Discusses nested structures and non-linear structures including hash tables, trees, and graphs. Emphasizes abstraction, encapsulation, inheritance, polymorphism, recursion, and object-oriented design patterns. Applies these ideas to sample applications that illustrate the breadth of computer science. A weekly laboratory period provides guided hands-on experience.

    Prerequisite: CMPU 101 .

    Open to all classes.

    Computer Science 102 and CMPU 145  may be taken in either order or concurrently.

    Two 75-minute periods plus laboratory.

  • CMPU 145 - Foundations of Computer Science

    Semester Offered: Fall and Spring
    1 unit(s)


    Introduces the theoretical, structural and algorithmic foundations of computer science. Topics include: sets, relations, functions, recursive data structures, recursive functions, induction, structural induction, probability, logic, boolean algebra, and proving program correctness. Concepts are reinforced by regular programming assignments. A weekly laboratory period provides guided hands-on experience. Mr. Aaron.

    Prerequisite: CMPU 101 .

    Open to all classes.

    Computer Science 145 and CMPU 102  may be taken in either order or concurrently.

    Computer Science 145 and CMPU 203  may be taken in either order or concurrently.

    Two 75-minute periods plus laboratory.

Computer Science: II. Intermediate

  • CMPU 203 - Computer Science III: Software Design and Implementation

    Semester Offered: Fall and Spring
    1 unit(s)
    Develops techniques for design and implementation of complex software systems. Topics include object-oriented modeling, design patterns, component libraries, inheritance, parametric polymorphism, generic algorithms, containers, iterators, function objects and storage management. Development of a software system of significant complexity is required. A weekly laboratory period provides guided hands-on experience. Mr. McCarthy.

    Prerequisite: CMPU 102 .

    Computer Science 203 and CMPU 145  may be taken in either order or concurrently.

    Two 75-minute periods plus laboratory.
  • CMPU 224 - Computer Organization

    Semester Offered: Fall and Spring
    1 unit(s)
    Examines the hierarchical structure of computing systems, from digital logic and microprogramming through machine and assembly languages. Topics include the structure and workings of the central processor, instruction execution, memory and register organization, addressing schemes, input and output channels, and control sequencing. The course includes a weekly hardware/software laboratory where digital logic is explored and assembly language programming projects are implemented. Mr. Jones.

    Prerequisite: CMPU 102  and CMPU 145 .

    Two 75-minute periods plus laboratory.
  • CMPU 235 - Programming Languages

    Semester Offered: Fall
    1 unit(s)
    Introduces a systematic approach to understanding the behavior of programming languages. Topics include interpreters; static and dynamic scope; environments; binding and assignment; functions and recursion; continuation passing; parameter-passing and method dispatch; objects, classes, inheritance, and polymorphism; type rules and type checking.

    Prerequisites: CMPU 102  and CMPU 145 

    Two 75-minute periods.
  • CMPU 240 - Language Theory and Computation

    Semester Offered: Fall and Spring
    1 unit(s)
    Study of regular sets, context free grammars and languages, finite and push-down automata, as well as more powerful models of computation, such as Turing machines. Provides theoretical foundations for CMPU 331 .

    Prerequisites: CMPU 102  and CMPU 145 .

    Two 75-minute periods.
  • CMPU 241 - Analysis of Algorithms

    Semester Offered: Fall and Spring
    1 unit(s)
    Introduces the systematic study of algorithms and their analysis with regard to time and space complexity. Topics include divide-and-conquer, dynamic programming, greediness, randomization, upper and lower-bound analysis, and introduction to NP completeness. Emphasis is placed on general design and analysis techniques that underlie algorithmic paradigms. Builds a foundation for advanced work in computer science.

    Prerequisites: CMPU 102  and CMPU 145 .

    Two 75-minute periods.
  • CMPU 245 - Declarative Programming Models


    1 unit(s)
    Declarative programming languages are important alternatives to the imperative languages used in most software systems. This course covers two kinds of declarative programming: functional programming and logic programming. Topics include the semantics of declarative languages, techniques for programming in declarative languages, and the use of mathematical logic as a tool for reasoning about programs.

    Prerequisites: CMPU 102  and CMPU 145 .

    Two 75-minute periods.
  • CMPU 250 - Modeling, Simulation and Analysis

    Semester Offered: Spring
    1 unit(s)
    Principles of computation in the sciences, driven by current applications in biology, physics, chemistry, natural and social sciences, and computer science. Topics include: Discrete and continuous stochastic models, random number generation, elementary statistics, numerical analysis and algorithms, discrete event simulation, and point and interval parameter estimation. Students pursue projects that involve modeling phenomena in two to three different fields and simulate the model in order to understand mechanisms and/or explore new hypotheses or conditions. Mr. Aaron.

    Prerequisite: CMPU 102 , MATH 122 or MATH 125. CMPU 241  and /or MATH 221  recommended but not required.

    Two 75-minute periods.
  • CMPU 290 - Field Work

    Semester Offered: Fall or Spring
    0.5 to 1 unit(s)
  • CMPU 295 - Special Topics

    Semester Offered: Fall or Spring
    0.5 to 1 unit(s)
    Intermediate-level treatment of specialized topics in computer science.

    Prerequisite: permission of instructor.

  • CMPU 298 - Independent Work

    Semester Offered: Fall or Spring
    0.5 to 1 unit(s)
    Prerequisite: permission of the instructor.

Computer Science: III. Advanced

Two units of 200-level computer science are prerequisite for entry into 300-level courses; see each course for specific courses required or exceptions.

  • CMPU 300 - Senior Research and Thesis

    Semester Offered: Fall
    0.5 unit(s)
    Investigation and critical analysis of a topic in experimental or theoretical computer science. Experimental research may include building or experimentation with a non-trivial hardware or software system. A student electing this course must first gain, by submission of a written research proposal, the support of at least one member of the computer science faculty with whom to work out details of a research strategy. The formal research proposal, a written thesis, and oral presentation of results are required for the course. A second faculty member participates in both the planning of the research and final evaluation.

    Prerequisites: Minimum 3.5 GPA in 200- and 300-level Computer Science coursework at the end of the junior year, and permission of the department.

    Yearlong course 300-CMPU 301 .

  • CMPU 301 - Senior Research and Thesis

    Semester Offered: Spring
    0.5 unit(s)
    Continuation of CMPU 300 .

    Prerequisite: CMPU 300 .

    Yearlong course CMPU 300 -301.

  • CMPU 324 - Computer Architecture

    Semester Offered: Spring
    1 unit(s)
    An exploration of current research areas in computer organization including an examination of data-flow, microcode, cache memory, distributed, parallel, and other nonstandard architectures, and related topics. Mr. Jones.

    Prerequisite: CMPU 224 .

    Two 75-minute periods.
  • CMPU 325 - Microcomputers and Digital Electronics


    1 unit(s)
    Advanced seminar in the architecture and implementation of microprocessors. Topics include digital logic, memory and processor interfaces, interrupt handling, and serial I/O methods. Differences among logic implementations such as TTL, CMOS, and ECL are considered. Students participate in the design and implementation of a microcomputer.

    Prerequisite: CMPU 224 .

    Two 75-minute periods.
  • CMPU 331 - Compilers

    Semester Offered: Spring
    1 unit(s)
    Studies the theory of automata for language recognition as well as the implementation of actual compilers for programming languages. During the semester students develop modules comprising the front-end of a compiler for a high-level computer.

    Prerequisites: CMPU 224  and CMPU 240 . In addition, CMPU 235  or CMPU 245  is recommended, but not required.

    Two 75-minute periods.
  • CMPU 334 - Operating Systems

    Semester Offered: Fall
    1 unit(s)
    Deals with the theory and implementation of the software that governs the management of system resources. Topics that are covered include file organization, process scheduling, system services, memory management, security methods, resource contention, and design principles. Operating systems for parallel and distributed processing, real-time processing, virtual machines, and networking are also considered.

    Prerequisites: CMPU 203  and CMPU 224 .

    Two 75-minute periods.
  • CMPU 353 - Bioinformatics

    Semester Offered: Spring
    1 unit(s)
    (Same as BIOL 353 ) DNA is the blueprint of life. Although it’s composed of only four nucleotide “letters” (A, C. T, G), the order and arrangement of these letters in a genome gives rise to the diversity of life on earth. Thousands of genomes have been partially sequenced, representing billions of nucleotides. How can we reach this vast expanse of sequence data to find patterns that provide answers to ecological, evolutionary, agricultural, and biomedical questions? Bioinformatics applies high-performance computing to discover patterns in large sequence datasets. In this class students from biology and computer science work together to formulate interesting biological questions and to design algorithms and computational experiments to answer them.

    Prerequisites: BIOL 238 , BIOL 244 , or BIOL 248 ; CMPU 203 ; or permission of the instructor.

    To register for this course students must satisfy either the biology or computer science prerequisites, but not both.

    Two 2-hour periods.
  • CMPU 365 - Artificial Intelligence

    Semester Offered: Fall
    1 unit(s)
    An introduction to Artificial Intelligence as a discipline of Computer Science, covering the traditional foundations of the field and a selection of recent advances. Traditional topics include: search, two-player adversarial games, constraint satisfaction, knowledge representation and reasoning, and planning. Additional topics will vary from year to year and will be selected from the following: reasoning about time, probabilistic reasoning, neural networks, philosophical foundations, multi- agent systems, robotics, and recent advances in planning. Significant programming assignments and a course project complement the material presented in class.

    Prerequisite: CMPU 145 , CMPU 203 , and CMPU 245 , or permission of the instructor.

    Two 75-minute periods.
  • CMPU 366 - Computational Linguistics


    1 unit(s)
    Addresses the fundamental question at the intersection of human languages and computer science: how can computers acquire, comprehend and produce natural languages such as English? Introduces computational methods for modeling human language, including morphology, syntax, semantics and discourse; corpus-based and statistical methods for language analysis; and natural language applications such as information extraction and retrieval, summarization, and machine translation. Students gain experience with sophisticated systems for linguistic analysis and machine learning.

    Prerequisite: CMPU 240  recommended, but not required.

    Two 75-minute periods.
  • CMPU 375 - Networks


    1 unit(s)
    Provides an introduction to the design of network-based applications. Topics include Internet protocols, client/server-based paradigms (including peer-to-peer), relational database design, data normalization techniques, SQL, and security. Web-based applications provide an infrastructure and motivation for the intersection of networks and database systems. Programming assignments and projects emphasize key concepts.

    Prerequisite: CMPU 203  or permission of the instructor.

    Two 75-minute periods.
  • CMPU 376 - Computer Games: Design, Production and Critique


    1 unit(s)
    (Same as MEDS 376 ) Investigates all stages of the game development process, including conception, design, physical and digital prototyping, implementation and play-testing, among others. The course emphasizes the integration of formal, dramatic and dynamic game elements to create a specific player experience. The course also examines various criteria and approaches to game critique, including issues of engagement, embodiment, flow, and meaningful play. Course work includes a series of game development projects carried out in groups, along with analysis of published games and readings in critical game-studies literature. No previous experience in media production or computer programming is necessary. Mr. Ellman.

    Prerequisite: permission of the instructor.

    Two 75-minute periods.
  • CMPU 377 - Parallel Programming

    Semester Offered: Spring
    1 unit(s)
    An introduction to parallel computing, with coverage of parallel architectures, programming models, and techniques. Topics include SIMD and MIMD models, shared-memory and message-passing styles of computation, synchronization, deadlock, and parallel language design. Students are exposed to common techniques for solving problems in sorting, searching, numerical methods, and graph theory, and gain practical experience through programming assignments run on a parallel processing system.

    Prerequisites: CMPU 203  and CMPU 224 .

    Two 75-minute periods.
  • CMPU 378 - Graphics


    1 unit(s)
    A survey of computational and mathematical techniques for modeling and rendering realistic images of three-dimensional scenes. Topics include: event-driven user interfaces; geometric transformations and projections; scene graphs; implicit and parametric surfaces; models of color and light; surface shading and texturing; local and global rendering algorithms; and an introduction to computer animation.

    Prerequisites: CMPU 203  and MATH 221 .

    Two 75-minute periods.
  • CMPU 379 - Computer Animation: Art, Science and Criticism


    1 unit(s)
    (Same as ART 379 , FILM 379 , and MEDS 379 ) An interdisciplinary course in Computer Animation aimed at students with previous experience in Computer Science, Studio Art, or Media Studies. The course introduces students to mathematical and computational principles and techniques for describing the shape, motion and shading of three-dimensional figures in Computer Animation. It introduces students to artistic principles and techniques used in drawing, painting and sculpture, as they are translated into the context of Computer Animation. It also encourages students to critically examine Computer Animation as a medium of communication. Finally, the course exposes students to issues that arise when people from different scholarly cultures attempt to collaborate on a project of mutual interest. The course is structured as a series of animation projects interleaved with screenings and classroom discussions.

    Prerequisite: permission of the instructor.

    Not offered in 2015/16.

    Two 2-hour periods.
  • CMPU 395 - Special Topics

    Semester Offered: Spring
    1 unit(s)


    In-depth treatment of specialized topics in Computer Science.

    Topic for 2015/16b: Network Security. This course offers an introduction to the fundamental issues of network security. We study cryptography, firewalls, network authentication, intrusion detection and prevention, wireless security, web security, and management of network security including security assessment, contingency planning, and network incident response. Students gain hands-on experience with software software tools used by security professionals and hackers, and learn to interpret packet contents to detect intrusions and data theft.

    Prerequisite: CMPU 203  and CMPU 224 .

    Two 75-minute periods.

  • CMPU 399 - Senior Independent Work

    Semester Offered: Fall or Spring
    0.5 to 1 unit(s)