Computer Science Course Descriptions

COMP 7 Special Topics: Great Advances in Computer Science

(Cross-listed with Women's Studies 196.) History of computation and computer science with a focus on advances since the conception of the first electronic computer in 1937. Women and men who have helped form the digital world we live in today, including the context of their contributions from both social and technical perspectives. Basic computer science from a historical perspective. Students will develop a web-based timeline of progress in computer science using HTML, javascript, XML, and AJAX. No prerequisites. Lab to be arranged the first day of class.

Prerequisite: None.


COMP 9 Exploring Computer Science

Everyday life is becoming more and more dependent upon computers, which will create many opportunities and challenges for students during and after their college careers. This half-credit class offers you an opportunity to discover how computers work and how they can be used to solve general problems. You will be introduced to basic computer problem solving programming techniques through lectures and labs using the Java programming language. No prior computer experience is necessary, only a desire to learn. For students exploring their career options, this class is applicable not only to computer science, but to cognitive science, economics, medicine and a host of other professions that depend highly on computers.

Prerequisite: A sincere interest in learning more about computer science and no prior programming experience.

Note: 1/2 course credit

COMP 10 Exploring Computer Science

Everyday life is becoming more and more dependent upon computers, which will create many opportunities and challenges for students during and after their college careers. This half-credit class offers you an opportunity to discover how computers work and how they can be used to solve general problems. You will be introduced to basic computer problem solving programming techniques through lectures and labs using the Java programming language. No prior computer experience is necessary, only a desire to learn. For students exploring their career options, this class is applicable not only to computer science, but to cognitive science, economics, medicine and a host of other professions that depend highly on computers.

Prerequisite: A sincere interest in learning more about computer science and no prior programming experience.

Note: 1/2 course credit. Other sections of COMP 10 are full-credit.

COMP 10-DA Data Analysis

Students explore how to collect, analyze, and present data for projects in the social and natural sciences. They learn about concepts such as units of analysis, levels of measurement, and longitudinal versus cross-sectional analysis. Students will learn to use techniques for storing, maintaining, analyzing, and visualizing data using technologies such as Microsoft Excel, VB, Access, SPSS, and R.

Prerequisite: None.


COMP 10-EXP Exploring Computer Science

Everyday life is becoming more and more dependent upon computers, which will create many opportunities and challenges for students during and after their college careers. This half-credit class offers you an opportunity to discover how computers work and how they can be used to solve general problems. You will be introduced to basic computer problem solving programming techniques through lectures and labs using the C++ programming language. No prior computer experience is necessary, only a desire to learn. For students exploring their career options, this class is applicable not only to computer science, but to cognitive science, economics, medicine and a host of other professions that depend highly on computers.

Prerequisite: A sincere interest in learning more about computer science and no prior programming experience.


COMP 10-GD Game Development

How do you create a complete computer / video game from start to finish? What are the different elements to a game? What makes a great game? Computer game development requires all facets of Computer Science, including Computer Graphics, Artificial Intelligence, Algorithms, Data Structures, Networking, and Human-Computer Interaction. It also requires knowledge of other disciplines including Economics, Mathematics, Physics, and Psychology. The value of this course goes beyond culminating Computer Science. It is largely a hands-on course where real-world skills including design, teamwork, management, documentation and solid communications are critical. This course will delve into topics such as the game engine, sound, rendering, modeling, user interfaces, and animation. This course will also cover designing MMORPGs and mobile games. Finally, this course will feature an autonomous robot programming competition.

Prerequisite: None.


COMP 10-IDI Introduction to Digital Information

An introduction to computer science for students with no background in the field. The course asks: "How does a web-based slide show work?" and uses that deceptively simple question to explore several ideas and skills of computer science. The ideas include how images, sounds, and texts are represented, transmitted, and processed in digital form, how the Internet and how data compression and security work. The skills include Javascript and HTML programming to animate web pages and Unix programming to manage and process collections of images. A weekly lab is required.

Prerequisite: None.


COMP 11 Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.)

Prerequisite: High school programming course, COMP 10, EN 47, or consent.


COMP 14 Computational Concepts in Biological and Cognitive Sciences

A second course in Computer Science for interdisciplinary students in the biological and cognitive sciences. Programming skills relevant to problems in biology and cognitive science, including data structures, algorithms, algorithm analysis techniques, discrete mathematics, and probability. Students will complete programming projects in languages appropriate to these disciplines. High demand; register at department.

Prerequisite: COMP 11 or equivalent.


COMP 15 Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent.


COMP 20 Web Programming

An introduction to techniques, principles, and practices of writing computer programs for the World Wide Web. Server and browser capabilities and limits. Media types, handlers, and limitations. Web programming languages and techniques. Web security, privacy, and commerce. Lectures augmented with programming projects illustrating concepts and current practice.

Prerequisite: COMP 11; or COMP 10 and consent.


COMP 22 Discrete Mathematics

(Cross-listed as Mathematics 22.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 11 or Computer Science 11 or permission of instructor.


COMP 40 Computer Architecture

Structure and function of the main components of a computer systems: processors, main memory, and disk storage devices. Processor design including instruction set design and interpretation. Assembly language programming. Implementation issues for high-level languages.

Prerequisite: COMP 15.


COMP 40 Machine Structure & Assembly-Language Programming

Structure and function of the main components of a computer systems: processors, main memory, and disk storage devices. Processor design including instruction set design and interpretation. Assembly language programming. Implementation issues for high-level languages.

Prerequisite: COMP 15.


COMP 50 Special Topics

Content and prerequisites to be announced. Over the past three years, special topics courses have been offered in parallel computing, graph drawing, computational geometry, multimedia data compression, cryptography and security, digital network communication, spoken language systems, system and network administration, and machine learning. Please contact the department for detailed information.


COMP 50-BIO Bioinformatics

Biology is increasingly becoming an information science. Recent advances are driving huge growth in genomic sequencing, clinical patient databases, and imaging technologies. Performing 21st-century biomedical research will require an increasing level of computational literacy.

This course, which counts towards the distribution requirement in mathematical sciences, will introduce future biologists and doctors to these important skills. Hands-on projects include discovering and analyzing new genes, identifying molecular causes of human disease in gene expression data sets, and developing and testing hypotheses about clinical data. Students will learn to be sophisticated users of online bioinformatics tools. Using simple scripting languages, students will write basic programs to manipulate and analyze data.

Prerequisite: Bio 41 or BME 62. NO computer programming experience is required.

Note: This course does not count as an elective towards the computer science major. Computer Science majors interested in this topic should consider Comp 167 instead.

COMP 50-GD Game Development

How do you create a complete computer / video game from start to finish? What are the different elements to a game? What makes a great game? Computer game development requires all facets of Computer Science, including Computer Graphics, Artificial Intelligence, Algorithms, Data Structures, Networking, and Human-Computer Interaction. It also requires knowledge of other disciplines including Economics, Mathematics, Physics, and Psychology. The value of this course goes beyond culminating Computer Science. It is largely a hands-on course where real-world skills including design, teamwork, management, documentation and solid communications are critical. This course will delve into topics such as the game engine, sound, rendering, modeling, user interfaces, and animation. This course will also cover designing MMORPGs and mobile games. Finally, this course will feature an autonomous robot programming competition.

Prerequisite: COMP 15.


COMP 50-NLP Natural Language Processing

This course covers the fundamentals of natural language processing (a.k.a. computational linguistics) which deals with computational understanding and generation of text (typed, not spoken) in human languages. Topics include parsing (derivation of grammatical structure), unification of features, semantic interpretation, disambiguation, multilingual generation, use of context and world knowledge, pronoun resolution, and statistical methods. Theory is reinforced by a multi-part programming project.

Prerequisite: Introduction to Computer Science (COMP 11) or consent of instructor.


COMP 80 Programming Languages

An overview of language design and implementation, plus programming techniques for particular types of languages. Compilers and interpreters, binding, scope rules, formal semantic models, structure hiding, object-oriented programming, functional programming, and logical programming. Examples and problems from Pascal, Algol, C++, Java, Scheme, Lisp, Prolog, and others.

Prerequisite: COMP 15.


COMP 106 Object-Oriented Programming for Graphical User Interfaces

Object-oriented programming (OOP) and design, using the Java language. General OOP concepts (classes and instances, methods, inheritance) plus specifics of programming in Java, with emphasis on application to graphical user interfaces (GUIs). Design and programming projects using Java and toolkits.

Prerequisite: COMP 15 or consent of the instructor.


COMP 111 Operating Systems

An "operating system" is a program that controls the overall function of a computing system, which includes managing hardware as well as execution of other programs. This course examines the design and implementation of contemporary operating systems. Programming assignments will apply practice with operating system use, analysis, and internal design. Topics include operating system organization and structure, process and thread management, memory management, file management, device management, and potentially network and distributed systems if time permits.

Prerequisite: Comp 40 and one additional course in computer science numbered 80 or above.


COMP 112 Computer Networks

Design and implementation of computer communication networks, protocols, and applications, with an emphasis on the Internet protocol suite. Network architectures and programming interfaces. Data link, transport, and routing protocols. Congestion sources and remedies. Addressing and naming in local area and wide area networks. Network security and network management.

Prerequisite: Computer Science 111, or concurrent enrollment in Comp 40 and consent of the instructor.


COMP 114 Network and System Administration

A survey of the theory and practice of maintaining reliable, robust, and secure computer networks. Planning, deployment, monitoring, and maintenance of computer systems, networks, network services, and user environments. Dependency analysis and network troubleshooting. Administrative maturity models and best practices. Security, ethics, and legal issues of system administration. Hands-on exercises in deploying network services and infrastructure.

Prerequisite: Comp 111.


COMP 115 Database Systems

Fundamental concepts of database management systems. Topics include: data models (relational, object-oriented, and others); the SQL query language; implementation techniques of database management systems (storage and index structures, concurrency control, recovery, and query processing); management of unstructured and semistructured data; and scientific data collections.

Prerequisite: COMP 15.


COMP 116 Computer Systems Security

A systems perspective on host-based and network-based computer security. Current vulnerabilities and measures for protecting hosts and networks. Firewalls and intrusion detection systems. Principles illustrated through hands-on programming projects.

Prerequisite: Comp 40 and one course chosen from among Comp 111, Comp 114, and Comp 115.


COMP 120 Web Engineering

Web applications are complex systems that deliver a plethora of functionality to a large number of users, and also exhibit unique behaviors and demands in terms of performance, scalability, usability, and security. Web engineering is an emerging and multidisciplinary process that is used to create quality web applications. This course will discuss the limits of current web technologies, the similarities and differences between web and software engineering, design, information and service architectures, content management, and testing disciplines. Frameworks such as Rails, Spring, and Symfony will be emphasized and used. Projects will involve search, cloud computing, location-based services, and mobile web development.

Prerequisite: Comp 15 and Comp 20, or Consent of Instructor.


COMP 126 Numerical Analysis

The course will begin with an introduction to Matlab programming, which will be essential throughout. The goal of the course is to learn how to choose numerical algorithms intelligently, and how to analyze them using mathematics and numerical experimentation. Numerical linear algebra will be treated fairly lightly. (For a much more thorough treatment of this topic, take MATH 128 / CS 128 or its 200-level branch.) We will instead spend a substantial amount of time on numerical methods for differential equations. Students enrolled in MATH 250NA will be given more advanced problems, and occasionally additional lectures.

Prerequisite: For MATH 126 / CS 126: MATH 38 and experience programming in a language such as C, C++, Fortran, Matlab, etc. For MATH 250NA: Instructor's permission.


COMP 128 Numerical Linear Algebra

The two basic computation problems of linear algebra; solution of linear systems and computation of eigenvalues and eigenvectors. (Cross Listed as MATH 128 Numberical Linear Algebra)

Prerequisite: Math 46 and Comp 11.


COMP 131 Artificial Intelligence

History, theory, and computational methods of artificial intelligence. Basic concepts include representation of knowledge and computational methods for reasoning. One or two application areas will be studied, to be selected from expert systems, robotics, computer vision, natural language understanding, and planning.

Prerequisite: Comp 15 and either MATH 22 or familiarity with both symbolic logic and basic probability theory. Cognitive Science majors may substitute COMP 14 for COMP 15 and MATH 22.


COMP 132 Decision Theory and Artificial Intelligence

Probabilistic and decision-theoretic AI. Probabilistic and decision theoretic representations along with automated reasoning that maximizes expected benefit. Probability theory, utility theory, decision theory, Markov models, Markov decision processes, and making decisions under uncertainty. Applications to AI, including planning, decision making, communications with humans, and learning.

Prerequisite: Comp 15.


COMP 135 Introduction to Machine Learning

An overview of methods whereby computers can learn from data or experience and make decisions accordingly. Topics include supervised learning, unsupervised learning, reinforcement learning, and knowledge extraction from large databases with applications to science, engineering, and medicine.

Prerequisite: Comp 15 and Math 22 or consent of instructor. (Comp 160 is highly recommended).


COMP 140 Advanced Computer Architecture

Elements of modern computer architectures, including instruction pipelining, memory hierarchy, instruction-level parallelism, threading, and multi-core processors. Architectural issues related to software optimization. Architectural design decisions and how they affect operating systems and compilers. Quantitative analysis and evaluation of modern computing systems, including selection of appropriate benchmarks to reveal and compare the performance of alternative design choices in system design.

Prerequisite: Comp 40.


COMP 150 Special Topics

Content and prerequisites to be announced. Over the past three years, special topics courses have been offered in parallel computing, graph drawing, computational geometry, multimedia data compression, cryptography and security, digital network communication, spoken language systems, system and network administration, and machine learning. Please contact the department for detailed information.


COMP 150 Information Theory for Machine Learning

This course will cover the elements of information theory from the point of view of machine learning researchers. Topics will include entropy, mutual information, source coding, channel coding, minimum description length, Kolmogorov complexity, universal coding, and relationship to statistics. Textbook: Elements of Information Theory, Second edition by Thomas M. Cover and Joy A. Thomas, Wiley-Interscience, 2006

Prerequisite: COMP 15, MATH 12, MATH 22, or equivalents, plus a good understanding of probability.


COMP 150 Foundations of Scientific Visualization: Data to Understanding

Introduction to relevant concepts in visualization, including computer graphics rendering, data representation, feature detection, search and retrieval, knowledge representation, and interaction. Tools and techniques for practical visualization. Elements of related fields including computer graphics, human perception, imaging science, and information theory. Covers examples from a variety of scientific and medical applications. Hands-on exercises and projects.

Prerequisite: Comp15 or permission of instructor.


COMP 150-BMT Special Topics: Biometrics

Biometrics is an advanced technology that utilizes the intrinsic physiological or behavioral traits of individual for machine-based Automatic and reliable identification. It attracted much attention recently due the increasing demand for the security and privacy related applications in both academia and industry. This course covers the state-of-the-art biometrics science and technology with a balance between the basic theoretical background and practical applications. Topics include various biometric modalities-- face, fingerprints, voice, hand geometry, palmprint, iris, retina, signature, and so forth. Multimodal and multimodality biometric frameworks will also be discussed. Some new topics, such as soft biometrics, will be particularly included. Fundamental theories and knowledge covered by the course include pattern recognition, feature extraction, classifier, probabilistic models, image processing, and machine learning. Tools and techniques for practical biometrics system design as well as hands-on exercises and projects will be provided.

Prerequisite: Comp15 and MATH46, or equivalent. Backgrounds in pattern recognition, image processing, probability or statistics will be helpful. Students from non-computer science/engineering backgrounds are also encouraged. Consent of the instructor.

Note: Crosslisted as EE 193 and Math 50C.

COMP 150-C The Art of Commercial Software Development

This course will introduce the student to best practices used in commercial software development environments. Using Ruby on Rails, we will create a web application and iterate through its feature set throughout the course. Among the topics that students will study and experiment with are refactoring, unit and integration testing, continuous integration, and code reviews. The course format will be a combination of lecture, discussion, and lab; assignments will involve programming and application of techniques covered during class.

Prerequisite: COMP 15, and OOP experience (or instructor consent). No prior Ruby/Rails experience necessary!


COMP 150-CCP Concurrent Programming

This class investigates the special programming issues that arise when creating software systems that exhibit non-sequential behavior. The class will take a pragmatic approach to concurrent programming, first examining the use of state machines as a modeling tool for concurrent programs and then focusing on creating concurrent programs. The specific concepts that will be taught include mutual exclusion, monitors and condition synchronization, deadlock, safety and liveness properties, and multi-threading. The goal of the class is for students to become proficient in the concepts and programming techniques of concurrent programming. This course will use Java as the teaching language, but C++ constructs may also be introduced time permitting.

Prerequisite: Comp 15. Recommended: Comp 40, 106, and/or Comp 111.


COMP 150-CIS Collaborative Development of Interactive Software Systems

This courses addresses the collaborative design and implementation of interactive software systems. The course centers on a class-wide project, typically an interactive game. The lectures inform the project design and development process. Topics include design and human factors, project management, collaboration, software architecture, graphics, networking. The course emphasizes creativity, teamwork and hands-on experience.

Prerequisite: COMP 11 and COMP 15, or consent.


COMP 150-CLT Computational Learning Theory

In this semester the course will focus on Computational Learning Theory. Machine learning algorithms can be used analyze available data and develop generalizations that are useful for handling future data or experience. Computational Learning Theory studies the computational complexity, data complexity, and convergence properties (bounds on error rates) of machine learning algorithms. The emphasis is on algorithms that are both efficient and have good convergence properties. Alternatively, for some machine learning problems we seek lower bounds on the amount of resources for any potential algorithm. Models vary from adversarial worst case scenarios to statistical settings where a random process generates the data. The course reviews classical results in this field and samples from recent developments.

Prerequisite: COMP 160 or similar background. Some knowledge of probability theory is necessary (e.g. from MATH 161). COMP 170 is also helpful but not required. The course requires an aptitude for mathematical analysis, writing proofs, etc.


COMP 150-CPA Clouds and Power-Aware Computing

Fundamentals of computing clouds as an application platform. Kinds of clouds, including application-as-a-service, infrastructure-as-a-service, and platform-as-a-service. Storage clouds. Service-oriented architecture, design, and programming. Elasticity and economy of scale in cloud architectures. Power awareness and power-aware programming both in isolation and in cloud architectures. Performance analysis of clouds and strategies for outsourcing computation to cloud infrastructure.

Prerequisite: Comp40 or EE14. Comp111 (or EE128) and Comp112 (or EE129) are preferred but not required.


COMP 150-CRY Cryptography

Private and public-key cryptography, block ciphers, stream ciphers, key exchange, authentication, signatures, voting, secret sharing, digital cash, pseudorandomness.

Prerequisite: Matt 22.


COMP 150-DAO Data Flow Analysis & Optimization

Building on my research with the Hoopl library for dataflow analysis and optimization, this course will cover both textbook and research-related topics: - Implementation of classic optimizations, using the Hoopl dataflow framework, which is written in Haskell. -Comparison of results obtained using Hoopl with dataflow frameworks written in first-order or object-oriented languages. - Research opportunity to improve the structure and performance of the back end of the Glasgow Haskell Compiler. - Research opportunity to investigate testing questions: * By what means can we unit-test individual optimizations and optimization frameworks? * Can random testing, as in QuickCheck, test optimizers effectively?

Prerequisite: Comp80 or compilers or graduate standing or permission of instructor. Haskell is NOT a prerequisite.


COMP 150-ECP The Evolution of Cognitive Processes

This course will take an interdisciplinary look at the ideas put forth in Eric Baum's book "What is Thought?" Baum argues that the structure and nature of thought, meaning, sensation, and consciousness have evolved naturally as a result of constraints on the brain's processing power, and that this is the key to understanding how the brain is different from present-day digital computers. Students will be expected to have a computer science background at the level of at least COMP 14 or 15. Computer science concepts beyond this level will be taught. No programming will be required, though students with programming skills may wish to do programming as part of a project. Others will be expected to contribute to discussions of the philosophical, linguistic, evolutionary, and neurological concepts involved.


COMP 150-FML Foundations of Machine Learning

An advanced course focusing on statistical foundations and algorithms for machine learning. Topics include: classification and regression problems, regularization, kernel methods, model selection, boosting, support vector machines, and unsupervised learning.

Prerequisite: Prior exposure to machine learning (as in COMP 150-ML or in COMP 135 or perhaps an AI course), some calculus (as in MATH 13), algebra (as in MATH 46), and probability (as in MATH 161/162). Or permission of instructor.


COMP 150-FP Functional Programming

Functional programming is a body of language elements and programming techniques that: promote construction of safe, reusable abstractions, provide unusually powerful, expressive means of composing existing abstractions to make new abstractions, and help flush out many trivial bugs without getting in the programmer's way. Functional programming is also the wellspring of new ideas which eventually find their way into other languages. COMP 150FP is called Advanced Functional Programming because: It will take you to the frontier of research and help you identify the interesting ideas and the important problems which will influence the languages of the future and it will also give you a chance to practice the best techniques used by functional programmers, so you can use them in your work. This class will focus on Haskell, which encompasses most of the interesting ideas of the field. These ideas range from the first stirrings articulated by John Backus in his 1997 Turing Award Lecture to the latest developments in type systems and type functions. COMP 150FP will be run as a seminar; participants will meet twice weekly for intensive discussion. To allow time for introduction, discussion, and post-discussion analysis, each meeting will last two hours. A typical discussion will focus on one or two papers.

Prerequisite: COMP 80 or a comparable survey course briefly covering functional programming, or graduate standing, or permission of the instructor.


COMP 150-GA Stochastic Search and Genetic Algorithms

Many search and optimization problems in engineering, biology and economics are too complex, or too poorly understood, to be solved by conventional direct search techniques. This course introduces students to advanced heuristic search methods which are gaining increased popularity for these challenging problems. Topics covered will include ant-colony optimization, simulated annealing, hill climbing, and genetic algorithms. By the end of the semester, students will be able to critically evaluate relevant research in the field, and will develop the judgment and experience to design and apply your own search techniques.

This class will involve significant programming assignments, as well as technical readings, class discussion, and student presentations.

Prerequisite: Data structures and algorithms (or consent of instructor).


COMP 150-GT Graph Theory

Introduction to graph theory, including trees, matchings, colorings, planar graphs. There is no programming in this class, but there are applications in computational geometry, computational biology, and algorithms.

Prerequisite: COMP 160 OR COMP 170 OR any math course numbered 100 or above.


COMP 150-HPC Introduction to High Performance Computing: Tools and Algorithms

This course covers fundamental topics in High Performance Computing, with emphasis on Parallel Computing. We will start from basics in programming with C++, creating and compiling sequential codes and employing high performance scientific numerical libraries such as LAPACK and BLAS. Next, we will learn MPI programming and employ parallel linear algebra libraries such as ScaLapack for dense and SuperLU for sparse matrix operations. The focus will be on load balancing, efficient design of communication and multilevel parallelism required for heterogeneous computing. We will continue with advanced topics such as: parallel I/O and GPU-CPU computing. We will use computer laboratory for hands-on tutorials. Grade will be based on 5-6 home assignments/mini-projects and a final project with presentation. Students are encouraged to suggest projects related to the area of their expertise.

Prerequisite: Programming competence in some language (C++, C, fortran, Matlab,..). Basics of linear algebra and numerical differentiation and integration.


COMP 150-IPL Implementing Modern Programming Languages

TBA.

Prerequisite: TBA.


COMP 150-IR Intelligent Robotics

This course introduces the science and design of robots -- engineered artifacts which are both computational and physically embodied, and whose programmed behavior may be described as intelligent. We will explore principles and algorithms for computation in the physical world. Topics covered may include behavior-based embodied artificial intelligence, kinematics and dynamics, motion planning, geometric reasoning, state estimation, mapping, and manipulation, as well as biologically inspired and biomimetic robotics, distributed robotics and intelligence, and some philosophical questions pertaining to the nature of intelligence in the physical world.

The class will contain significant lab work, where the students design, build and program small-scale yet non-trivial robots using Lego Mindstorms building blocks.

Prerequisite: Programming (COMP15 or COMP14) and mathematics (MATH22 and basic calculus), or consent.


COMP 150-MMC Multimedia Communication

This course provides a broad technology primer on the recent communications convergence towards IP-centric networks as well as the emerging multimedia technologies, and network and platform architectures that underlie this convergence. Principal objectives are to provide students a sound understanding of modern network support for popular applications of today and an appreciation of the potential for tomorrow's applications, as well as insight to the commercial application of such technologies through consideration of market drivers and industry trends. Building on the network convergence theme, underlying technologies covered include voice over IP (VoIP), media servers and speech application platforms, video streaming, signaling, session control and media server control protocols, mobile communications, content distribution, and multimedia applications. Students will gain practical experience of developing applications using such technologies and enjoy familiarization with a host of established and emerging Internet protocols. Having already taken COMP 20-01 and/or general knowledge of Internet technology is desirable.

Prerequisite: COMP 15.


COMP 150-OSD Open Systems Development

Introduction to the open source development process. Learn the background of the movement. Use tools and techniques typically employed in open source projects. Topics covered include identification and evaluation of open source projects and software, open source licenses, contributing new features or submitting bug fixes, and working on virtual teams.

Prerequisite: COMP 15


COMP 150-PC Parallel Computing

This course will introduce fundamentals of parallel computation. The course will explore the types of problems and special resource requirements which necessitate parallel solutions. The course considers various parallel algorithms, the distributed-memory, message-passing model, and multi-core technology (shared memory model.) Students will implement solutions to run on a cluster of workstations using C/C++ with the MPI (Message-Passing Interface) library for programming assignments. OpenMP will be included as time permits.

Prerequisite: Comp 11 or consent.


COMP 150-SDA Introduction to Software Design and Analysis

This course covers the fundamental principles and techniques of software design. Students will learn to identify and invent suitable abstractions for solving software problems. Key design elements and concerns will be discussed and a variety of software tools and techniques will be studied and applied to create software solutions. Topics will include design patterns, design capture in UML, quality attribute analysis, and design validation. We will explore the role of interfaces and specification in achieving modularity and decoupling in design. A state of the art SDE will be used for to implement the design. Additional topics to be covered include refactoring, test case design, unit and integration testing, and debugging strategies.

Prerequisite: COMP15


COMP 150-SG Special Topics: Serious Games

Modern computer gaming technology has been successfully and is increasingly used for purposes other than entertainment, such as training, education, advertising, communication, team building and more. This course will introduce the history, principles and practices of these serious games. We will review and analyze existing serious games, and discuss the tradeoffs involved in creating a game with a specific non-entertainment purpose, while still retaining the benefits of gaming. We will focus on game design principles, and also discuss the development issues that can arise. Students will participate in a group project to create a serious game.

Prerequisite: Comp 50-GD, or Comp 15 and consent of instructor.


COMP 150-SN Sensor Networks

Sensor Networks are distributed systems comprised of resource constrained devices that are tasked to collaborate toward some common sensory goal. Newer sensor networks are emerging that consist of heterogeneous sensing and actuation devices that are embedded into physical spaces, capture and manipulate more sophisticated data (e.g., audio, video) and may respond to the physical environment in which they are embedded (e.g., move cameras, toggle lights, un/lock doors). This class will provide an overview of the many domain specific challenges that these systems naturally confront, including task decomposition, resource allocation and scheduling, task distribution, resource usage optimization, data aggregation, and abstractions/languages for SN task specification. Students will work in small groups to create their own Sense and Respond applications.

Prerequisite: Comp 40 or EE 14.

Note: Crosslisted as EE 193-B.

COMP 150-SQA Foundations of Software Quality Assurance and Testing

Best practices on software testing standards for software engineers to improve end-user customer quality: requirements level, unit level, functional level, and system level. Approaches for improving in-house quality and reducing maintenance cost. Techniques for maintaining efficiency under release pressures in industrial environments. Practical project that provides experience in implementing a project using industry-proven agile release process.

Prerequisite: Comp 15. Corequisite: Comp 80 or Consent of Instructor.


COMP 150-SR Speech Recognition: The Art, Business & Technology of Voice User Interfaces

In this class, the student will design and create fully functional speech-recognition systems. You'll learn to effectively design natural, over-the-phone interactions that employ fundamental HCI principles, and to program these interactions elegantly using cutting edge scripting technologies and VoiceXML. Student's previous projects have included a remote Tivo voice-interface, an iTunes ringtone generator, and a social-network friend-finder. In addition to producing speech-recognition applications, students will refine how communicate design ideas and present design concepts, as well as learn to analyze human-computer interactions more critically. See other past student projects on www.artofspeechrecognition.com.

Prerequisite: COMP 15.


COMP 150-SRL Statistical Relational Learning

This course will explore an emerging area of research in Artificial Intelligence (AI) - Statistical Relational Learning. A basic realization is that building large scale AI systems requires abilities to represent, reason and learn in domains with both complex relational structure and rich probabilistic structure. Techniques for achieving that build on work from probability theory and graphical models, as well as logic and databases, to develop new representations and sophisticated algorithms to work with them. We will be reading a recent collection of articles written as a introduction to the field, as well as more recent work from conferences.

Prerequisite: COMP 160: Algorithms; and COMP 135 or COMP 150-ML: Machine Learning, or COMP 131: Artificial Intelligence or similar experience.


COMP 150-SWA Semantic Web Applications

The Semantic web consists of portable data designed to be shared across multiple communities and applications. Recently, high profile web sites, such as Digg.com and Creative Commons, have provided examples of how to embed richer information content directly within web pages using a W3C standard called RDFa. The broader based Resource Description Format, RDF, has been developed over more than 10 years into a widely used, though often less well recognized, standard for web interoperability. RDF is found in applications from areas as diverse as RSS news feeds and gene ontology data in the field of Bioinformatics and as far afield as the internals of the Mozilla Firefox browser and its flexible extension system.

In this course, we will take a practical tour of introductory Semantic Web Concepts and software. The primary approach will be to concentrate on the basic functionality of real world applications that you can use today to take advantage of the theories behind Semantic Resource sharing and discovery.

Regular basic and brief readings about the concepts underpinning the technology will be reinforced with weekly programming and data gathering assignments illustrating fundamental functionality available in web and web related applications. Additionally, we will port data from application to application, exploring the reusability potential of applications such as the del.icio.us online bookmarking system and the varied dbpedia.com approaches towards exploring meaning and structure from collections of pages within Wikipedia.

Prerequisite: Comp 20, or permission of the instructor.


COMP 150-TSA Time Series and Digital Audio

Given the prevalence of cell phones and digital music players, it would not be surprising to find that at any given moment, the majority of CPU cycles worldwide were being spent on processing audio. In spite of this ubiquity, relatively little of the standard computer science curriculum is spent studying the representation and processing of digital audio. In this course, we will look at audio within the framework of time series, sequences of data points collected at (usually) fixed time intervals. The study of time series has applications in areas ranging from astronomy to economics to medicine.

Prerequisite: C++ at the level of COMP 15, calculus at the level of MATH 12, and probability at the level of COMP/MATH 22. Elementary linear algebra will be introduced in the course.

Note: Texts: Brockwell and Davis, Introduction to Time Series and Forecasting, Second Edition, Springer, 2003

Ken C. Pohlmann, Principles of Digital Audio, Fifth edition, McGraw-Hill, 2005


COMP 150-TUI Tangible User Interfaces

Tangible user interfaces are emerging as a new interaction style that intertwines the physical and digital worlds. Extending beyond the limitations of the computer mouse, keyboard, and monitor, tangible user interfaces offer the promise of interfaces that allow users to take advantage of their natural spatial skills while supporting collaborative work. Students will be introduced to conceptual frameworks, the latest research, and a variety of techniques for building tangible interfaces. This class requires creativity as well as an interdisciplinary perspective. Students will work in teams to design, prototype and physically build tangible user interfaces for science museums. This is an interdisciplinary course. Students from other fields including Human Factors, Engineering, Child Development, Drama, and Studio Art are encouraged to inquire about enrolling.

Prerequisite: COMP-11 and Senior status or consent of the instructors.


COMP 150-VIZ Visualization

Creative visualizations have been proposed to present and improve understanding of data, processes, structures, and concepts in a wide range of fields. Well-designed visualizations are powerful tools for communication and support recall, inference, and decision-making. While authoring visualizations often requires considerable effort by trained designers, active research has given us a growing toolbox for visual description and presentation. This course is an introduction to visualization techniques and technology. It targets students interested in building novel visualization tools, as well as those interested in applying visualization techniques to their own work. We will study techniques for creating effective visualizations, incorporating principles of graphic design, cognitive and perceptual psychology, data analysis, and human factors evaluations. Readings will include research papers representing the state of the art in visual communication technology.

Prerequisite: Comp15.


COMP 160 Algorithms

Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems.

Prerequisite: COMP 15 and MATH 22.


COMP 163 Computational Geometry

Design and analysis of algorithms for geometric problems. Topics include proof of lower bounds, convex hulls, searching and point location, plane sweep and arrangements of lines, Voronoi diagrams, intersection problems, decomposition and partitioning, farthest-pairs and closest-pairs, rectilinear computational geometry.

Prerequisite: COMP 160 or consent


COMP 163 Computational Geometry

Fundamental techniques, data structures, and algorithms for solving geometric problems such as computing convex hulls, intersection of line segments, the Voronoi diagram and Delaunay triangulation of a point set, polygon triangulation, range search, linear programming, and point location. Some topics of discrete geometry, e.g., the crossing number of a graph and its applications, are also covered.

Prerequisite: COMP 160 or consent


COMP 167 Computational Biology

Computational challenges in molecular biology, including sequence alignment and comparison, genomic annotation, micro array data analysis, and proteomics. Underlying computational techniques such as dynamic programming, hidden Markov models, statistical analyses, and search and optimization procedures. Prerequisites: Comp15 and at least one CS course numbered 100 or higher.

Prerequisite: Comp15 and at least one CS course numbered 100 or higher.


COMP 170 Theory of Computation

Models of computation: Turing machines, pushdown automata, and finite automata. Grammars and formal languages including context-free languages and regular sets. Important problems including the halting problem and language equivalence theorems.

Prerequisite: COMP 15 and MATH 22.


COMP 171 Human-Computer Interaction

Introduction to human-computer interaction, or how computers communicate with people. Methodology for designing and testing user interfaces, interaction styles (command line, menus, graphical user interfaces, virtual reality), interaction techniques (including use of voice, gesture, eye movement), design guidelines, and user interface management software system. Students will design a small user interface, program a prototype, and test the result for usability.

Prerequisite: COMP 15 or COMP 14


COMP 175 Computer Graphics

This course explores the fundamentals of computer graphics, including representing digital images, 2D rasterization and anti-aliasing, 3D rendering via ray casting, ray tracing and radiosity, viewing transformations, 3D shape representation, and an introduction to modeling and computer animation. Assignments and projects require a good working knowledge of the C programming language.

Prerequisite: Prerequisites: Comp 15, Math 13, and Math 46 or consent of instructor.


COMP 180 Software Engineering

We will explore the state-of-practice and current trends in development and use of methods and tools used to support develop software in the large. Students are exposed to the phases of the software life cycle as well as a variety of approaches to software development. Students will gain experience in team work and in oral and written communication through report writing and class presentation. As a part of the laboratory component of the course in which they will complete a semester long individual software project, students will experience the full range of activities associated with software design and development. The lab is required for seniors, optional for graduate students. COMP 180 is a prerequisite for COMP190: Software Engineering Project, which is offered in the spring.

Prerequisite: COMP 80 and senior standing or instructor's consent.


COMP 181 Compilers

Translation and implementation of programming languages. Parsing, code generation, and optimization. Compiler design projects for simple block-structured programming languages are used to illustrate the concepts and methods.

Prerequisite: COMP 40, COMP 80, and COMP 170.


COMP 190 Senior Design Project

Team analysis, planning, development, and maintenance of a software product, using software engineering principles, practices, and tools. This course fulfills the project requirement of the Bachelor of Science in Computer Science in the School of Engineering.

Prerequisite: COMP 180.


COMP 193 Directed Study

Guided study of an approved topic. Credit as arranged.

Prerequisite: Consent.


COMP 193-ECT Emerging CMOS Technologies

This course explores novel and hybrid CMOS-based technologies. Students will strengthen their research skills by reading research papers, presenting concept ideas, and discussing them. The reading list will include but not limited to: impact of various device technology options/improvements for 45nm CMOS and beyond, single-electron transistors, integrating CMOS with carbon nanotubes and organic/molecular electronics. 1/2 course credit.

Crosslisted with EE 193-11.

Prerequisite: EE 103 or equivalent, or consent.


COMP 193-PCB Problems in Chemistry, and Bioengineering

This is a research intensive course that requires long blocks of time to study and analyze complex data analysis methods for modern chemistry and biology problems. Students will spend class time working through solutions to presented problems, that they will then implement and test outside of class time. The normal block schedule would not enable such intensive interactive problem solving as it can take up to an hour to just understand the issues at hand. Cross-listed as CHEM0193-01

Prerequisite: Permission of instructor.


COMP 194 Directed Study

Guided study of an approved topic. Credit as arranged.

Prerequisite: Consent.


COMP 194-ECT Emerging CMOS Technologies

This course explores novel and hybrid CMOS-based technologies. Students will strengthen their research skills by reading research papers, presneting concept ideas, and discussing them. The reading list will include but not limited to: impact of various device technology options/improvements for 45nm CMOS and beyond, single-electron transistors, integrating CMOS with carbon nano tubes and organic/molecular electronics. 1/2 course credit.

Crosslisted with EE 194-11.

Prerequisite: EE 103 or equivalent, or consent.


COMP 194-PCB Problems in Chemical and Bioengineering

This is a research intensive course that requires long blocks of time to study and analyze complex data analysis methods for modern chemistry and biology problems. Students will spend class time working through solutions to presented problems, that they will then implement and test outside of class time. The normal block schedule would not enable such intensive interactive problem solving as it can take up to an hour to just understand the issues at hand. 1/2 course credit.


COMP 197 Honors Thesis

To be announced.

Prerequisite: To be announced.


COMP 199 Internship Computer Science

Prerequisite: Consent.


COMP 232 Advanced Knowledge-Based Systems

Graduate-level course in which students take Computer Science 132 plus study additional topics in an application area and produce a substantial independent project or paper in that area.

Prerequisite: Computer Science 131.


COMP 250-BCI Brain-Computer Interaction

This is a seminar course exploring new forms of human-computer interaction based on measurement of brain function and properties. Students will read research papers in several related disciplines and present and discuss them in the seminar. We will explore the use of brain sensing technologies to detect specific forms of brain activity, with a focus on functional near-infrared spectroscopy work at Tufts. We will then explore ways to use such measurements as input to new forms of lightweight, adaptable user interfaces.

Prerequisite: Background in one or more of: human-computer interaction, psychology, cognitive science, or brain measurement techniques; or permission of instructor.


COMP 250-CM Computational Metabolics

An advanced seminar in computational methods for analyzing and engineering metabolic pathways. The seminar aims to expose students to current research on the topic and to develop the students' research skills. Students will read and critique papers from the literature, and present and discuss their own research.

Prerequisite: Instructor permission.


COMP 250-DSS Dynamic Software Systems

Modern software systems must be flexible to adapt to their changing environment and/or the changing desires of their users. Unlike traditional software systems that are largely delivered in a monolithic and static configuration, more and more modern systems are composed of smaller pieces that are customizable at deployment time and at run time. This class will specifically focus on run-time dynamism in software systems. The need for run-time dynamism arises from developers' effort to keep pace with change (e.g., plugins) as well as newer computing domains (e.g., pervasive, autonomic, or context-aware computing). Understanding, introducing, and managing run-time dynamism will require looking into aspects of software architecture, component orientation, and software deployment. Class meetings will be a combination of lectures, discussions, and student presentations and participation. Students will choose a programming project of either their own related interests or from a suggestion list to explore the topic area, which will result in a research paper. Some emphasis will be placed on the OSGi Service Platform, which is a highly dynamic Java-based application framework.

Prerequisite: Senior or graduate standing and software development experience or instructor's consent.


COMP 250-GEO Computational Geometry Seminar

Advanced topics and current research results in computational geometry.

Prerequisite: Comp/Math 163 or consent.


COMP 250-MLS Machine Learning Seminar

An advanced seminar in Machine Learning exploring recent ideas and approaches in the literature and developing students' research skills. Students will read and critique current papers from the literature, and present and discuss their own research. We will pick several clusters of articles from topics relevant to students' work and center the course around these.

Prerequisite: COMP 160 (Algorithms), COMP 135 (Machine Learning), and preferably at least one advanced machine learning course.

Note: (0.5 credit course to be offered both Fall and Spring)

COMP 250-PDE Numerical Methods for Partial Differential Equations

Computational techniques for the numerical solution of partial differential equations. Finite-difference discretizations, accuracy, consistency, and stability. The Lax equivalence theorem. Finite-element methods, Sobolev spaces, variational formulations, approximation theory. Multigrid methods. This course is intended to be approachable for students both from mathematics and from areas of science and engineering where computer simulation is commonplace. We will both prove mathematical theorems and write simulation codes.

Prerequisite: Math 38 and 135 (or equivalents), or consent.


COMP 250-SA Practice and Research in Software Architecture

Software architecture forms the backbone for any successful software-intensive system. An architecture is the primary carrier of a software system's quality attributes such as performance or reliability. Getting the architecture right is essential to success of any software project. Understanding the architecture is essential for maintaining any large software project. In this course we will explore the what, why, and how of software architecture and how research is done in the field. We will focus on both the practice of software architecture and trends in software architecture research. Class meetings will be a combination of lectures on both the topic of software architecture and on doing research in the area, guest speakers, and student presentations. Students will choose a topic either of their own interest or from a suggestion list, and explore that topic with the goal of producing a project demonstrating an application of the topic or a research paper appropriate for submission to a conference.

Prerequisite: Senior or graduate standing and software development experience or instructor's consent.


COMP 260 Advanced Algorithms

If you loved your algorithms class and can't wait for more, this is the class for you. In this pleasant and fun class, we will look at some more modern algorithms, some beautiful algorithms gems, and some areas of current research in algorithms. Topics will include using randomness in the design and analysis of algorithms, approximation algorithms, and online algorithms.

Prerequisite: Comp 160 or permission of the instructor.


COMP 263 Advanced Computational Geometry

Design and analysis of sequential, parallel, probabilistic, and approximation algorithms for geometry problems. Geometric data structures, complexity, searching, computation, and applications. Selected advanced topics.

Prerequisite: Comp 163 or consent.

Note: Cross-Listed with MATH 263

COMP 265 Parallel Computation

Existing and proposed architectures for parallel computation. Fundamental synchronization and communication protocols. Algorithm development for distributed memory multicomputers.

Prerequisite: Computer Science 15 and 160.


COMP 270 Theory of Computation

Computability, undecidability, computational complexity.

Prerequisite: Computer Science 170.


COMP 272 User-Interface Software

Emerging new non-WIMP (window icon menu pointer) user interface styles, such as virtual reality, lightweight, non-command, tangible, natural, continuous, and parallel interfaces. Techniques, languages, abstractions, and tools for building current and future user-computer interfaces. Project in designing, prototyping, and building a non-WIMP user interface, with class discussions and critiques.

Prerequisite: Computer Science 15, plus a course related to human-computer interaction.


COMP 275 Advanced Computer Graphics

This course investigates a specific topic in computer graphics at an advanced level. The specific topic will vary from year to year; some examples of topics include physics-based simulation, geometric modeling, advanced rendering, and scientific visualization. The course is project based; students will apply concepts from the classroom and research papers to individual and group projects. In the spring of 2007, the course will focus on implicit modeling. Students will design and implement a 3D graphical modeling system for creating and rendering 3D computer models.

Prerequisite: COMP 175.


COMP 277 Data Visualization

Selected advanced topics on the visualization of abstract structures, user-interface design, scientific visualization, visual languages, and graph drawing. Applications to software visualization, digital libraries, and multimedia.

Prerequisite: Computer Science 160 or permission of instructor.


COMP 290 Programming Project

Independent development of a complete computer program for an approved task, including design, implementation, and documentation. Please see departmental website for specific details.

Prerequisite: Permission of instructor.


COMP 293 Graduate Special Topics / Master's Project

Guided individual study of an approved topic suitable for a master's design project. Credit to be arranged. Members of the Department.

Prerequisite: Permission of the instructor.


COMP 293-HCI HCI Master's Project

Graduate students doing research projects and theses in human-computer interaction will present and discuss their research and receive guidance and feedback. We will also cover research literature in human-computer interaction and current activity in the field. Prerequisite: permission of instructor.

Prerequisite: Permission of the instructor.


COMP 294 Graduate Special Topics / Master's Project

Guided individual study of an approved topic suitable for a master's design project. Time to be announced. Instructor to be arranged. Credit to be arranged. Members of the Department.

Prerequisite: Consent of the instructor.


COMP 295 Master's Thesis

Guided research on a topic which has been approved as a suitable subject for a master's thesis. Credit to be arranged. Members of the Department.


COMP 296 Master's Thesis

Guided research on a topic which has been approved as a suitable subject for a master's thesis. Credit as arranged. Supervision and advising by faculty of the Department. Please see the Registrar for appropriate section numbers.


COMP 297 Graduate Research

Guided research on a topic suitable for a doctoral dissertation.


COMP 298 Graduate Research

Guided research on a topic suitable for a doctoral dissertation. Credit as arranged. Supervision and advising by faculty of the Department.


COMP 401-PT Master's Continuation Part-Time


COMP 402-FT Master's Continuation Full-Time


COMP 501-PT Doctoral Continuation Part-Time


COMP 502-FT Doctoral Continuation Full-Time


Back to Main Courses Page