Graduate Courses

Graduate Courses

Master’s students may take any five graduate courses as long as these are approved by their supervisor. Graduate students in the department may include in their programs relevant courses from other departments within the Division. The department currently offers the following courses. The actual courses offered each term will be determined by student demand and the availability of faculty.

BU Timetable (all courses)

CS 502: Digital Topology and Mathematical Morphology (3-3-0)
Digital topology deals with topological properties of digital images. Its concepts and results are used to specify and justify some important image processing algorithms, including algorithms for thinning, boundary extraction, object counting, and contour-filling. Mathematical Morphology is a set-theoretic method of image analysis allowing to extract image components that are useful for representation and description. It can provide boundaries of objects, their skeletons, and their convex hulls. It is also useful for many pre- and post-processing techniques, especially in edge thinning. The goal of this course is to provide a full exposure to these techniques, their mathematical backgrounds, and their different applications.

CS 505: Data Mining for Scientists (3-3-0)
Cross-listed with CS 405. Data is now created faster than humans are able to understand it and use it. There may be patterns hiding within this data with potentially useful information. This course will teach students, including Biology and Biochemistry students as well as those from Computer Science, how to discover these patterns for the purpose of solving problems, gaining knowledge, and making predictions. Topics covered in this course include data preparation, clustering, classification, association rules for mining and linear regression. This course includes assignments and a final project where the students are required to perform mining on real datasets drawn from the biological and physical sciences. Students are expected to perform a substantial analysis of the data set, or prepare a research paper.

CS 506: Parallel Models and Algorithms (3-3-0)
This course is an introduction to the design and analysis of parallel algorithms and also to the various models of parallel computation. Typical topics include: parallel algorithms for various problems such as basic arithmetic, sorting, searching, selection, graph theory, matrix computations, combinatorial enumeration, optimization, computational geometry, and numerical analysis; parallel computational models and their properties; complexity classes; the parallel computation thesis.

CS 509: Pattern Recognition (3-3-0)
This course addresses the statistical pattern classification theory and techniques. The material presented is concerned with discrimination and classification in the context of computer vision applications. The course topics include Bayesian decision theory, maximum likelihood estimation, nonparametric techniques, stochastic methods and unsupervised clustering.

CS 510: Model-Based Testing of Reactive Systems (3-3-0)
Testing is the primary hardware and software verification technique used by industry today. Usually, it is ad hoc, error prone, and very expensive. In recent years, however, many attempts have been made to develop more sophisticated, formal testing methods. The goal of this course is to provide an in-depth exposure of this emerging area. Students are expected to participate in the presentation of the lecture material and perform independent research.

CS 515: Concurrent and Real-Time Systems (3-3-0)
Concurrent systems are complicated; they consist of many components which may execute in parallel, and the complexity arises from the multitude of combinations in which they interact. Concurrency by its very nature introduces phenomena not present in sequential systems, such as deadlock and livelock. This course provides an introduction to an algebraic language (such as CSP) for specification, analysis, and verification of concurrent and real-time systems. It then goes and presents the use of such a language as a formal method for concurrency at different stages in the development process.

CS 516: Volumetric Image Analysis and Visualization (3-3-0)
Digital volumetric images are stacks of two dimensional image slices produced for instance by a tomographic scanner. The goal of this course is to study the different techniques and algorithms for the analysis of volumetric images including a discussion about some sources of volumetric images, especially those occurring in medical imaging with different modalities (Radiology, Computed Tomography, Magnetic Resonance Imaging, Nuclear Medicine, Ultrasound, Positron Emission Tomography). The course will also address the different techniques used to display and visualize volumetric images including volume slicing, surface rendering, and volume rendering.

CS 520: Advanced Topics in Software (3-3-0)
The course will present topics of current interest or research directions in software and related areas. The course content is expected to vary to reflect the current interests of students and faculty. Students are expected to participate in the presentation of the lecture material and engage in independent research.

CS 555: Automata Theory and Computational Complexity (3-3-0)
Cross-listed with CS 455. The course will address finite-state machines, context-free languages and pushdown automata, computability. A systematic study of the known relations between the most important resource bounded complexity classes, reductions, separation results and translation techniques is also included. Students are expected to prepare a research paper during the course.

CS 556: Compilers and Interpreters (3-3-0)
Cross-listed with CS 406. This course is intended as an introduction to the fundamentals of language translation and compiler construction. Topics will include language theory and syntax; grammars, finite state machines, non-deterministic push-down automata; a thorough treatment of parsing methods covering top-down, bottom-up and precedence parsers; Syntax directed translation; Run-time environments; optimization and error recovery; code generation. Students are expected to implement complex semantic analysis and a complex compiler back-end.  In particular they are expected to implement various aspects of machine code optimization.

CS 557: Database Software Design (3-3-0)
Cross-listed with CS 457. This course covers how one can implement a Database Management system. Major topics are Storage management, Query processing, and Transaction management. As a basic assumption, data will not all fit in main memory, so algorithms and data structures appropriate for effective disk storage and quick access must be used. For example, one may use index structures such as B-trees or hash tables. We cover parsing of queries and optimizing of query plans. Finally, we cover durability of transactions using logging, and concurrency control for isolation of transactions. Additional topics in distributed databases are also presented. Students are expected to prepare a research paper during the course, or pursue a larger applied project.

CS 560: Software Engineering (3-3-0)
Cross-listed with CS 410. Software is an engineered product that requires planning, analysis, design, implementation, testing and maintenance. This course is a presentation of the techniques used in each step of the software product process. Topics: software requirements analysis and specifications; software design process, object oriented design; testing, reliability and maintenance; automated design tools, programming environments. Students are expected to prepare a research paper during the course, and work on large applied projects.

CS 562: Mathematical Models in Image Processing (3-3-0)
Cross-listed with CS 462. Image processing is a rapidly growing field. As such, it requires and necessitates a number of mathematical models and domains to achieve efficient processing algorithms. Designing a successful processing technique invariably relies on having a successful model for images themselves. The mathematical techniques needed could range from Partial differential equations, Differential geometry, Morse theory, Topology, Algebraic topology, Wavelets, Statistical techniques, Calculus of variations, Numerical methods, Graph theory, and Optimization. The objective of this course is to discuss in depth a number of selected mathematical topics (and their use in image processing) that are of interest to the students at the moment the course is given.

CS 563: Image Analysis (3-3-0)
Cross-listed with CS 463. Image analysis is concerned with the development of machine algorithms in order mimic the biological organism’s ability to see and understand images and videos. The course content include: camera models and calibration, image enhancement, features extraction and representation, shape from shading, stereo and texture, optical flow, motion analysis, high level vision and case studies.

CS 564: Computer Networks and Distributed Algorithms (3-3-0)
Cross-listed with CS 464. The course presents computer networks at a functional level, with strong emphasis on programming distributed applications over a network. Discussion will be based on open networking and application standards such as the TCP/IP protocol suite and the Portable Operating System Interface (POSIX). The concept of distributed algorithms together with the associated challenges and examples are then presented. Programming distributed applications (in C or C++) is an integral part of the course. Students are expected to work on a large, distributed, and practically meaningful application as part of the course.

CS 567: Advanced Topics in Algorithms (3-3-0)
Cross-listed with CS 467. The course covers some advanced aspects of algorithms and complexity. It studies the topic of NP- complete problems. Some specialized algorithms in several areas will be discussed, such as Genetic Algorithms, algorithms from Bioinformatics, Computational Geometry, and Network Flow.

CS 569: Special Topics in Computer Science (3-3-0)
Cross-listed with CS 469. The course will present topics of current interest in Computer Science. The course content varies reflecting the interests of the faculty. Students are expected to participate in the presentation of the lecture material and engage in independent research.

CS 590: Masters Project (9-0-0)
The Masters project consists of addressing a CS research topic which may be theoretical or practical.  Research topics may be given individually or as “grand challenges” to several candidates; however, all the work for the project must be individual. Students can choose to do a project from the topics proposed by the department or opt for an internship at a public institution or a private company. All topics must be approved in advance by the course coordinator.  The project must demonstrate that a student understands and is capable of employing research methods and has command of the subject, must show evidence of perspective on the topic, and must show that appropriate methodology has been understood and applied. The deliverable for the project is a report (with appended code if applicable) that, in addition to the above, should show that the student is capable of writing a professional technical document.

CS 596: Research Topics in Computer Science (3-3-0)
This course provides an introduction to the primary and secondary sources of information in the computing science literature. Faculty discuss their own research objectives and present an overview of research issues in the major subject areas of Computer Science. Students are required to submit and present a paper on a topic that relates to their research.

CS 597: Graduate Seminar (6-0-0)
Students are expected to participate in the departmental seminars and give at a minimum one presentation (outlining their thesis proposal). All Master’s students are normally expected to enroll in this course in their first year in the program.

CS 599: Master’s Thesis (24-0-0)