Undergraduate Course Offerings
The follow is a sample of the undergraduate course offerings in Computer Science. See official course listings in the University Bulletin or register for classes through BU Brain.
CS 100, FUNDAMENTALS OF PROGRAMMING USING BASIC
Elementary computer programming concepts: variables, expressions, statements, sequential execution, branching, selection, iteration, sub-routines, simple data structures. Problem-solving techniques and applications using BASIC. To obtain a working knowledge of the language, students are required to develop programs of moderate difficulty. This course is open to all students who have not taken any other CS courses (with the exception of CS 105 and CS 205) and under these conditions, can count as free-elective credit for CS majors.
CS 101, INTRODUCTORY TOPICS IN COMPUTER SCIENCE
Introduction to and discussion of topics of interest to computer science majors: social,
ethical and professional issues; university, school and department resources; current
developments in computer science. Prerequisite: none.
fall only, 1 cr.
CS 105, INTRODUCTION TO COMPUTING
Computing and its place in our society, including ethics and privacy. Basic concepts
of computer hardware and systems. Data flow in computer systems. Understanding and
using common application programs: word processors, spreadsheets and databases. Computers
in communications. Basic concepts of algorithms, programming and the programming process.
CS majors may only use this as free-elective credit. Does not provide any prerequisites
for courses in the CS major or minor.
CS 110, PROGRAMMING CONCEPTS AND APPLICATIONS
An introductory course for students with little or no programming experience. Basic control flow, data types, simple data structures and functions using a scripting language. Developing code using an integrated environment. The basics of directories, files and file types, including text files. Simple examples of the applications enabled by a modern, platform-independent scripting language such as GUIs, event handling, and database access. This course is open to all students who have not taken any other CS courses (with the exception of CS 105 and CS 205) and under these conditions, can count as free-elective credit for CS majors.
CS 120, COMPUTER SYSTEMS I: MACHINE ORGANIZATION
The design and implementation of digital systems. Number representation and computer arithmetic. Design of a small computing system including an ALU, control unit, RAM, registers, bus system, instruction decoder, program counter, multiplexer, channels and clocking. Programmable logic arrays. Introduction to assembly language and C. Relationship of a higher-order programming language (C) to assembly language, and assembly language to machine code. Implementation of machine code in hardware. Use of computer-aided design and simulation tools. Supervised laboratory work involves digital system design and implementation, assembly language and C programming. Prerequisite: CS 100 or CS 110, or familiarity with programming.
CS 140, PROGRAMMING WITH OBJECTS
Assumes a foundation in procedural programming as covered in CS 100 or CS 110. Provides
the foundations of software development using Java. Problem solving using object-oriented
programming techniques is emphasized. Topics include primitive and reference data
types, variables, expressions, assignment, functions/methods, parameters, selection,
iteration, recursion, exception handling, generic linear data structures and maps,
file types, file I/O, simple GUIs, programming to an interface, use of inheritance,
javadoc documentation, and introduction to Java threads. Required laboratory provides
supervised problem solving, programming using the command line as well as Eclipse
or Netbeans development environments, code backup in a version control repository,
debugging and JUnit testing techniques. Prerequisite: CS 100 or CS 110, or familiarity
with computers and programming.
CS 185, LIVING/LEARNING COMPUTER PROJECT
Projects developed in the context of Residential Life's Learning Communities. Projects minimally include technology, community service and group learning and depend on the interests of instructor and needs of the sponsoring Living Community. Only counts as free-elective credit for CS majors.
CS 205, ADVANCED COMPUTER APPLICATIONS
Webpage development with HTML and Cascading Style Sheets; PowerPoint and effective computerized presentations; project scheduling tools; Visio for business use; using the Internet for research. Prerequisite: CS 105 or experience with personal computer applications. CS majors may only use this as free-elective credit. Does not provide any prerequisites for courses in the CS major or minor.
CS 211, PROGRAMMING I FOR ENGINEERS
Introduction to computer programming with engineering applications. Programming in
the procedural language C, control structures, functions, arrays and pointers. Introduction
to abstract data types and object-oriented programming using C++. Not applicable toward
degree in computer science.
CS 212, PROGRAMMING II FOR ENGINEERS
Development tools and methodologies for modular programming with an emphasis on engineering applications using the C language. Software design using functional and data abstraction. Specification, use and implementation of abstract data types including stacks, queues, lists, trees and graphs. Programming language features such as recursion, dynamically allocated data structures and separate compilation. Introduction to algorithm analysis, searching and sorting. Exposure to C++ classes for implementing abstract data types. Prerequisite: CS 211. CS majors may only use this as free-elective credit. Does not provide any prerequisites for courses in the CS major or minor.
CS 220, COMPUTER SYSTEMS II: ARCHITECTURE AND PROGRAMMING
The architecture and programming of digital computers. Data representation. Processor,
memory and I/O organization. Instruction set architectures, encoding and addressing
modes. I/O techniques. Interrupts. Assemblers, macro-processors, compilers, interpreters,
linkers, loaders. Assembly and machine language programming. C programming language
constructs (control and data structures, pointers, arrays and functions) and their
relationship to the underlying architecture. Supervised laboratory work involves programming
and debugging using machine language, assembly language and C. Prerequisite: CS 120
or CS 210.
CS 240, DATA STRUCTURES AND ALGORITHMS
Analysis of the design, implementation, and properties of basic and advanced data
structures, including lists, stacks, queues, hash tables, trees, heaps, and graphs.
Design and time-space analysis of basic and advanced algorithms, including searching,
sorting, insert/delete, hash table collision resolution techniques, recursive functions,
balanced tree maintenance, and graph algorithms. Weekly required laboratory programming
and three or more additional programming projects in C++. Practical programming techniques
including C++ templates and the Standard Template Library (STL), operator overloading,
C++ stream I/O, separate compilation using makefiles, debugging tools and techniques,
dynamic memory management. Prerequisites: CS 120 and CS 140.
CS 260, PROGRAMMING GUI SYSTEMS
An overview of the issues involved in the design and implementation of graphical user interfaces (GUI) and GUI applications. Event-driven programming; client/server model; interface tools; window managers; widgets; resources; graphics, fonts, text; internationalization; future directions of GUIs; multimedia; 3D interaction. Project-oriented course emphasizing the programming of GUI applications. Prerequisite: First year programming in the Dual-Diploma program.
CS 301, ETHICAL, SOCIAL AND GLOBAL ISSUES IN COMPUTING
Communications course with required writing and oral presentations. Understanding the local and global implications of computing in society, including ethical, legal, security and social issues. Developing professional skills related to computing, including effective communication and productive teamwork. Fostering an appreciation for continuing professional development. Should be taken at the same time as or before any junior-level Computer Science courses. Prerequisites: Any General Education "C" course, CS 101, and either CS 220 or CS 240.
CS 311, OPERATING SYSTEMS CONCEPTS
Introduction to fundamental concepts for the design and implementation of operating systems: hardware/software interfaces; processes and threads; scheduling; synchronization techniques and primitives; memory management and virtual memory; file systems; input/output subsystems; resource and system virtualization; protection and security; introduction to distributed systems. Not open to CS majors. Prerequisites: CS 212 and EECE 252 or CS 220 and CS 240.
CS 320, COMPUTER SYSTEMS III: ADVANCED COMPUTER ARCHITECTURE
Non-pipelined datapath and control logic; instruction pipelines and pipelined datapath
implementation; instruction set architecture and its implications on datapaths; memory
hierarchy; out-of-order execution; the I/O subsystem; introduction to multicore architectures.
Required lab includes student presentations. CS 320 is a number and credits change
for the course previously offered as CS 325. Prerequisite: CS 220.
CS 328, INTERNET PROGRAMMING
This course focuses on technologies and techniques for the development of applications for the Internet. Topics include TCP and UDP sockets programming; application layer protocols such as DayTime, POP3, SMTP, Telnet, FTP, LDAP and HTTP; Client-Server and Peer-to-Peer application models; Java technologies for database access (JDBC); remote/network objects (RMI and CORBA); concepts of scalability; two-, three- and multi-tiered application models; Web Services and XML. Prerequisites: CS 140 and CS 240.
CS 338, INTRODUCTION TO MULTIMEDIA SYSTEMS
Video and audio processing including file encoding/decoding, modeling, image creation and manipulation, animation and, if time permits, augmented reality. Projects will involve use of commonly available applications and basic graphics programming techniques to create and process graphic images and animation. Prerequisites: CS 212 or CS 240.
CS 345, SOFTWARE ENGINEERING
Software engineering practice applied to the life cycle of large software applications and engineering projects. Software project planning and management: risk management, estimation, scheduling, trade studies, CM and SQA. Software development: process model selection, domain analysis, requirements gathering, analysis and design modeling, user interface design, architectural and detailed design, documentation, testing strategies/methods, test plan generation, and reuse. Advanced topics include formal methods and cleanroom software engineering. Semester long, team project. Prerequisite: CS 240.
CS 346, ENTERPRISE SYSTEMS
Business computer systems design, modeling, development, implementation, management, simulation and analysis. The life cycle of enterprise systems, coupled with the business requirements of information technology. Tools for computer-aided software development, communication, financial analysis, project management and Internet resources. Business process modeling, requirements modeling, component modeling, data modeling and enterprise modeling. Object-oriented methods of design and analysis. Strategic planning and business objectives. Considerations of software, architectures, networks, implementations, operations and support. Design and analysis of data, I/O and user interfaces. Professional communication. Ethical, professional, and social issues. Prerequisites: CS 240 and 220.
CS 350, OPERATING SYSTEMS
Introduction to fundamental concepts for the design and implementation of operating
systems: hardware/software interfaces; processes and threads; scheduling; synchronization
techniques and primitives; memory management and virtual memory; file systems; input/output
subsystems; resource and system virtualization; protection and security; introduction
to distributed systems. Required lab includes student presentations. Prerequisites:
CS 220 and CS 240.
CS 373, AUTOMATA THEORY AND FORMAL LANGUAGES
Theory and application of automata and the languages they recognize. Regular languages,
finite-state automata, regular expressions, context-free languages, normal forms,
pushdown automata, context-sensitive languages, linear bounded automata, Turing machines,
computability, transducers. Application of concepts. Required activity includes student
presentations. Prerequisites: CS 240 and MATH 314.
CS 375, DESIGN AND ANALYSIS OF ALGORITHMS
Analysis of common algorithms for processing strings, trees, graphs and networks.
Comparison of sorting and searching algorithms. Algorithm design strategies: divide
and conquer, dynamic, greedy, back tracking, branch and bound. Introduction to NP-completeness.
Required activity includes student presentations. CS 375 is a number change for the
course previously taught as CS 333. Prerequisites: CS 240 and MATH 314.
CS 380, TOPICS IN COMPUTER SCIENCE
Topic varies, depending on interests of instructor.
CS 395, COMPUTER SCIENCE INTERNSHIP
On-the-job experience in computer science. Student interns have opportunities to work
in local industrial, commercial or not-for-profit institutions and to apply their
knowledge to practical professional problems. Formal classroom meetings in which interns
share their experiences and discuss job-search techniques. Prerequisites: four courses
in computer science; open to computer science minors or majors. Registration competitive
and by consent of instructor. Preference given to CS majors.
every sem., var. cr.
CS 396, COMPUTER SCIENCE CO-OP
On-the-job experience in computer science. Co-op students work 20 hours per week,
September through May, in local industrial, commercial or not-for-profit organizations
and apply their knowledge to practical, professional problems. Students share experiences
and discuss job search techniques in formal class meetings. Compensation provided
by sponsor organization. Prerequisites: four courses in computer science; open only
to junior or senior computer science majors. Registration, by consent of instructor,
is competitive and requires sponsor interview.
every sem., var. cr.
CS 397, INDEPENDENT STUDY
Individual study under direct supervision of faculty member investigating topic of
interest to student. Special registration form required with signature of supervising
CS 422, WEB-BASED PROGRAMMING
Using the World Wide Web as a platform for corporate intranets and the Internet at large. Covers HTTP protocol, Web servers, the Common Gateway Interface (CGI), CGI programming, active server page technologies (MS ASP, PHP and Cold Fusion), the Java Servlet API, Java server pages and Enterprise Java Beans. Additional topics: state-less programming, application state management, database connectivity, application scalability, scalability strategies and security. Prerequisites: CS 140 and CS 240.
CS 423, DESIGN AND IMPLEMENTATION OF EMBEDDED SYSTEMS
The use of single-board computer systems as the embedded processing elements for consumer and industrial products. Storage hierarchies, rotating and non-rotating storage devices. Parallel and serial interfacing standards. Architecture and application of small form factor, single board computers used to solve consumer and industrial problems. Application and use of small computer operating systems. This course has a directed laboratory in which students will get hands-on experience with interfacing and the application of small form factor devices including embedded web servers, single-board computer systems and mixed signal programmable systems on chip. Prerequisites: CS 320 and CS 350.
CS 424, MICROCONTROLLERS AND ROBOTICS
Microprocessor-based systems in hardware control. Embedded microcontroller systems: architectures and instruction sets for microprocessors and microprocessor-based control systems; memory and I/O port organization; serial and parallel I/O; timers; interrupts; ADC; DAC. Robotics: hardware; software; motion control; interaction control; actuators and sensors; trajectory planning; navigation; image processing and vision systems; operating systems and programming languages; multitasking; robot behavior and intelligence architectures; robot kinematics and dynamics. Supervised laboratory work involves microprocessor programming, interfacing and hardware control experiments. Students working in teams design and build mobile, autonomous, microprocessor-controlled robots and program them to perform a variety of tasks. Prerequisite: CS 350.
CS 426, WIRELESS SENSOR NETWORKS
Wireless sensor networks contain a large number of self-organizing communication devices. Each device has sensing, actuation, and wireless communication capability, as well as a certain level of intelligence for signal processing. Wireless sensor networks have been used in many applications such as personal communication, military surveillance, habitat monitoring and scientific exploration. The hype indicates that wireless sensor networks will dominate every aspect of our lives in the near future. This class presents the fundamentals regarding the hardware and software of wireless sensor networks. It synthesizes materials from many research papers, presenting principles, commonalities and open research issues. In this course, students will also have an opportunity to obtain hands-on experience on programming tiny communication devices to sense and communicate. Topics covered include: the introduction of sensor networks research; sensor network applications; programming sensor nodes by using TinyOS, NesC and TOSSIM; wireless networking protocols; wireless media access control; middleware (including time synchronization, localization, power management), security and privacy in wireless sensor networks. Prerequisites: CS 350.
CS 428, COMPUTER NETWORKS
Communication protocols and layering, hardware-software infrastructures for networking, MAC protocols, data link protocols, switching, inter- and intra-domain routing, the TCP/IP protocol suite, transport protocols, application layer protocols, local and system area networks, wireless and sensor networks, overlay and virtual networks, client-server and peer-to-peer models, network programming with sockets, protocol design and implementation issues, network security. Prerequisite: CS 350.
CS 431, ENTERPRISE NETWORK SECURITY
Historic background of network security; legal, social and ethical implications associated with network security. Emphasis will be on understanding and identifying hazards and the mitigation of the associated risks. Investigation and analysis of classical attacks. Machine and OS hardening. Additional topics will include: cryptography, perimeter defenses, firewalls, virtual private networks, remote network access and demilitarized zones. Prerequisites: CS 328 or CS 428.
CS 432, DATABASE SYSTEMS
Associations among data elements and data models: entity-relationship, relational and object-oriented. Relational database design techniques. Various query languages. Introduction to query processing, transaction management and concurrency control. Prerequisite: CS 375.
CS 433, INFORMATION RETRIEVAL
Indexing and data structures for storing and searching the index. Boolean, statistical, inference nets and knowledge-based models. Thesaurus construction. Query expansion. Natural language and linguistic techniques. Evaluation. Distributed information retrieval. Information integration and fusion. Dissemination of information. Summaries, themes and reading tours. Hypertext. Internet tools. Intelligent agents. Digital libraries. Prerequisite: CS 375.
CS 435, INTRODUCTION TO DATA MINING
Basic topics of data mining, including data preprocessing, mining association rules, classification rules, clustering rules, post processing and mining in unstructured data. Prerequisites: CS 375, MATH 304 and MATH 327.
CS 436, INTRODUCTION TO MACHINE LEARNING
This course provides a broad introduction to machine learning and its applications. Major topics include: supervised learning (generative/discriminative learning, parametric/non-parametric learning, support vector machines); computational learning theory (bias/variance tradeoffs, VC theory, large margins); unsupervised learning; semi-supervised learning; reinforcement learning. The course will give students the basic ideas and intuition behind different techniques as well as a more formal understanding of how and why they work. The course will also discuss recent applications of machine learning, such as to data mining, bioinformatics, and information retrieval. Prerequisites: CS 375 and MATH 327
CS 440, ADVANCED TOPICS IN OBJECT ORIENTED PROGRAMMING
Object-oriented programming and its concomitant design patterns provide rich abstractions for program development. These programs will eventually execute on real hardware, however. This course will investigate advanced object-oriented techniques and how they interact with hardware and operating system issues. We will ground our topics in C++, but the goal of the course will be to develop understanding that can be applied across languages. We will examine different design techniques for things such as memory management, and explore how and why they differ in performance and robustness. We will also cover idioms such as "Resource Acquisition Is Initialization" (RAII) and how they can be used to provide robust resource management for exceptions (exception safety). We will also devote time to covering generic programming and related topics such as expression templates. This is a growing area that seeks to decouple algorithms and data structures through the use of templates and other meta-programming techniques. These techniques exploit the fact that the C++ template mechanism is a language-within-a-language that is executed at compile-time rather than run-time. Additional topics include dynamic linking for techniques such as "plug-ins", template instantiation mechanisms, template specialization, idioms for memory management, thread-safety issues, thread-safety, C++ reflection. Prerequisites: CS 240 and CS 350.
CS 442, DESIGN PATTERNS
Patterns for program design including examples of patterns used in existing software libraries. Exercises in programming with design patterns and communicating designs to other programmers using the language of patterns. Use of an object-oriented programming language to implement patterns and principles for common design problems. CS 442 is a number change for the course previously offered as CS 342. Prerequisites: CS 140 and CS 375.
CS 446, ENTERPRISE SYSTEMS MANAGEMENT
Enterprise Systems Management: The tactical, operational and strategic role of management in computing systems planning, estimating, budgeting, scheduling and resource allocation. Computing system project implementation, monitoring, evaluation, quality and control. Managing strategic technological change, innovation and risk. Organization building, decision making, human resource issues, ethics and social responsibility. Assignments include case studies, teamwork, research, communication skills, web-site development and a semester-length team project. Prerequisite: Junior Standing.
CS 448, MULTIMEDIA SYSTEMS
Introduction to the organization of multimedia systems. Specifically, three core areas of multimedia research are covered: multimedia information indexing and retrieval, multimedia databases and multimedia networks. In each area, key concepts and algorithms are introduced and related practice projects are assigned. Depending on the progress of the course, more advanced topics in each area are also discussed. Prerequisite: CS 375.
CS 451, SYSTEMS PROGRAMMING
A detailed study of the application program interface of a modern operating system. File operations, concurrency, processes, threads, inter-process communication, synchronization, client-server programming, multi-tier programming. Prerequisite: CS 350.
CS 453, INTRODUCTION TO GRID COMPUTING
Programming paradigms, concepts and emerging technologies for Grid computing. Research issues include the design and implementation of Grid services, Web services, SOAP, XML, RMI, Work-flow, component based Grid computing, OGSA/OGSI, WSRF, Grid security and portal technologies for Grid computing. Prerequisite: CS 350.
CS 455, INTRODUCTION TO VISUAL INFORMATION PROCESSING
The course focuses on fundamental topics, including visual information acquisition, representation, description, enhancement, restoration, transformations and compressions, and reconstruction from projections. The second focus is on Computer Science applications, including algorithms developed in applications such as statistical and syntactic pattern recognition, robotic vision, multimedia indexing, visual data mining, and bio-informatics. Prerequisite: CS 375.
CS 457, INTRODUCTION TO DISTRIBUTED SYSTEMS
Fundamental issues in distributed systems. Distributed synchronization and concurrency control. Distributed process management (scheduling, remote invocation, task forces, load balancing). Protection and security. Robust distributed systems. Case studies. Prerequisites: CS 350.
CS 458, INTRODUCTION TO COMPUTER SECURITY
The course provides an introduction to the principles and practices of network, computer, and information security. Topics include authentication and cryptographic techniques, intrusion detection, access control, security policies, and program/policy analysis techniques. Prerequisites: CS 350 and CS 375.
CS 460, COMPUTER GRAPHICS
Concepts, structure, techniques and algorithms for use of modern interactive computer graphics systems. Graphics hardware, software system structure. Techniques and algorithms for basic graphics input/output functions. Matrix techniques for transformations and projections. Techniques for two- and three-dimensional modeling, rendering, animation and visualization. Prerequisite: CS 240. Corequisite: MATH 304.
CS 471, PROGRAMMING LANGUAGES
Introduction to the design and implementation of programming languages: linguistic
features for expressing algorithms; formal syntax specification; introduction to language
semantics and parsing; declarative programming (functional and goal-driven); scripting
languages; imperative programming (procedural and object-oriented); comparative design
and implementation issues across languages and paradigms. Assignments emphasize languages
such as Prolog, Haskell, Python, and Ruby. Required lab includes student presentations.
Prerequisites: CS 373 and 375.
CS 472, COMPILER DESIGN
Fundamentals of programming language translation. Compiler design concepts. General aspects of lexical analysis and parsing of context-free languages. Grammars and parsing techniques. Syntax-directed translation. Declarations and symbol management. Semantic processing and code generation. Principles, methods and examples of code optimization. Prerequisite: CS 373 and CS 375.
CS 476, PROGRAMMING MODELS FOR EMERGING PLATFORMS
Recent advances in hardware and software platforms bring along new requirements and challenges for programming language design and implementation. This course will investigate the state-of-the-art programming models best suited for a number of emerging platforms. In particular, we will look into several topics in great detail, including 1) programming on multi-core CPUs; 2) programming for sensor networks; and 3) game programming. Prerequisites: Java programming, CS 320 and CS 350.
CS 485, INFORMATION SYSTEMS SENIOR PROJECT I
First semester of two-semester-long team projects involving analysis, specification,
design, implementation and documentation of large-scale information systems. Project
teams work to bring structure to a loosely formulated business/organizational problem.
Previously learned concepts and techniques are applied in a real-world environment.
Interpersonal (including communication) skills are enhanced. Host organizations and
the instructor supervise the projects. Oral and written reports are required. Prerequisite:
senior standing in the Information Systems Dual-Diploma program.
fall only, 3 cr.
CS 486, INFORMATION SYSTEMS SENIOR PROJECT II
Continuation of CS 485, Information Systems Project I. Prerequisite: CS 485 and senior
standing in the Information Systems Dual-Diploma program.
spring only, 3 cr.
CS 495, PROFESSIONAL ETHICS AND COMMUNICATION
Development and application of professional written and oral communication skills
in computer science. Participation in a team project. Ethical and social responsibilities
within the computing profession. Prerequisites: senior standing.
every sem., 2 cr.
CS 498, UNDERGRADUATE PROJECT
Participation in a project under supervision of a faculty member. Written report and oral presentation required.
CS 499, UNDERGRADUATE RESEARCH
Participation in a project under supervision of a faculty member. Written report and oral presentation required.