Topics Courses

While the majority of computer science courses are described on the BU Bulletin, the Topics Courses have a generic descriptions on the BU Bulletin as the focus of the course and syllabus change semester-to-semester. Detailed descriptions of the topics courses are updated below as registration for the next semester approaches.

Topics courses vary between semesters, and same section number may refer to different topics in different semesters. See the Topics Courses Archive for information on past semesters.

Fall 2026 Topics Course Descriptions

CS303A1  ( old 391 A1): Web Application Development (must also enroll in A2, A3, A4, or A5 discussion section)

Prerequisites: CS111, CS112.

Content: Web Application Development is a comprehensive course empowering students to build dynamic web apps. Through hands-on projects, they learn essential code management with Git/GitHub, frontend languages like HTML/CSS, and interactive app development with JavaScript. React is introduced to simplify UI creation and promote code reusability. Students will explore industry-standard tools like Next.js, Vercel, and MongoDB.

This course number change is due to a recent approval of CS 303 as a BU Hub course, with the following Hub areas:

  • Digital/Multimedia Expression (DME)

  • Creativity/Innovation (CRI)

As a result, CS 303 will count toward HUB requirements starting in Fall 2026.

Instructor: Prof. Taymaz Davoodi

 

CS391 R1: Computer and Memory Architectures (must also enroll in R2 or R3 discussion section)

Prerequisites: CS210 or equivalent

Content: Want to build a computer processor? This course is a hands-on approach to the design of modern computing and memory architectures, with an emphasis on implementation and quantitative evaluation. Topics include digital logic and arithmetic-logic units (ALU); in-order pipelined central processing unit (CPU) microarchitecture; multi-level cache hierarchies and cache coherence protocols; and multicore processor systems. Additional topics may include advanced memory technologies, bus protocols, and hardware accelerators. The practical laboratory component of the course includes development of modules using a modern hardware description language (HDL), and assignments may include implementing designs on an FPGA.

Course Site: https://sites.google.com/bu.edu/cs391r1-fall2025

Instructor: Sabrina Neuman

 

CS392 X1: A faster-paced version of CS112 (Introduction to CS II)

Prerequisites: This course is designed for students who already have a basic level of proficiency in Java. In terms of course requirement, it is equivalent to CS112. 

Content: This course largely follows the following book (available on-line for free):

Algorithms by R. Sedgewick and K. Wayne, 4th edition, 2011.

It starts by quickly revisiting and then building upon basic programming concepts in Java. The main focus of the course is on the design, analysis and implementation of fundamental data structures used throughout computer science. These include linked lists, stacks, queues, trees, hash tables, graphs, as well as specialized methods for searching and sorting. All of our implementations will be written in the object-oriented programming language Java, making use of advanced programming features including abstract classes, generics, higher-order methods, and lazy evaluation.

Instructor: Hongwei Xi

 

CS501 E1-E2 : Mobile Application Development

Prerequisites: No prior experience in mobile application development is required. However, students must have a solid understanding of object-oriented programming and database development, equivalent to the material covered in CS 112 and CS 460. Required skills include fluency with object-oriented design and implementation, control structures, loops, arrays, XML, and basic database concepts. GUI and event-driven programming concepts will be introduced as part of the course.

Content: This graduate-level, hands-on practicum explores modern Android mobile application development using Kotlin, Jetpack Compose, and the Android SDK. Students will follow agile development practices and begin the course by building a series of small mobile apps to gain familiarity with core Android concepts. Midway through the semester, students will form small teams (2–3 members) and collaborate on a substantial final project.

The course emphasizes a modern, industry-aligned development workflow and integrates the use of AI-assisted development tools (e.g., Android Studio’s AI features) for code generation, documentation, and testing—requiring students to critically evaluate and reflect on AI contributions. This is a coding-intensive, project-based course with high expectations for collaboration, research, and independent learning. Students will be assessed through individual assignments, team research reports, two interim project reviews, and a final project with presentation.

Instructor: Ron Czik

 

CS 501 S2 : Agile Mobile Application Development

Great App Developers are creative, collaborative, thoughtful, understand good design principles and care about their user’s experience. In this highly collaborative course, students will model agile industry design practices to implement rich, cross-platform, data driven applications. 

Students are expected to be able to leverage their programming skills and pivot between multiple languages. Use of AI is welcome, but only as a tool to facilitate development, not a replacement to critical thinking or understanding of important design principles. Students will apply programming skills across multiple languages and frameworks, beginning with .NET and moving into other technology stacks. The course starts with individual exercises on UI components and event-based programming, then progresses to team projects covering advanced topics such as scalable design, asynchronous programming, exception handling, RESTful 3rd party API integration, authentication, multithreading, dependency injection, and advanced features like delegates, lambda expressions, and Language Integrated Queries (LINQ). 

In the second half, students conduct independent research to implement a Final APP, which serves as a portfolio piece often used in interviews to secure internships or jobs. 

Prior app development experience is not required, but object-oriented programming knowledge (along with the ability to pivot from one language to another), creativity, and teamwork are essential. 

Instructor: Shereif El-Sheikh

 

CS 598 A1 : Agentic AI for Everything

Prerequisites: Students must have completed any one of CS 440, CS 505, CS 523, CS 541 or CS 542 or with a grade of B+ or higher, or obtain permission from the instructor. Strong programming skills required. Familiarity with LLM API integration recommended.

Content: We are rapidly transitioning from the era of static chatbots to the age of Agentic AI: autonomous systems capable of reasoning, planning, and executing complex workflows without constant human oversight. While standard LLMs can answer questions, Agentic AI can actually take action, coordinating tools, code, and information to complete real tasks end to end, basically do everything in the digital realm!

This course is a practical, hands-on deep dive into building agentic systems that automate daily life and professional workflows. Have you ever wanted to build a digital assistant that can book travel, write and run code, or manage email autonomously? Students will master core agent fundamentals, including reasoning loops (ReAct), memory and context management, tool use and function calling. The course also examines practical limitations and failure modes such as hallucination propagation and safety constraints, alongside active research directions like multi-agent systems, RLVR, and agentic skill acquisition. During the semester, students are expected to fully implement their own personal agent in the style of modern agents such as OpenClaw or Claude Code, including functionalities for tool use, memory management and iterative execution.

Additional details can be found:

https://docs.google.com/document/d/1RpXJF_8R6H8NGkWSjn1VyNWGFo70U9limEzPWGP3NAI/edit?usp=sharing

Instructor: Chang Xiao

 

CS 599 A1:  Programming Massively Parallel Multiprocessors and Heterogeneous Systems

Prerequisites: This course is designed for CS PhD students interested in exploring the programming and optimization of GPU software.   You must have a basic understanding of the C/C++ programming language (especially its use of pointers) and an undergraduate level knowledge of computer architecture.

Content: This graduate course aims to provide hands-on experience in developing applications software for graphics processors with massively parallel computing resources.  The target audiences of the course are those who want to develop exciting applications for these processors, those who want to develop programming tools and future implementations for these processors, and those who want to understand how to program these devices at the level of C/C++.  The initial part of the course focuses on popular programming interfaces for these processors.  The course continues with a closer view of the internal organization of graphics processors and how it impacts performance.  Finally, implementations of applications and algorithms on these processors will be discussed.  Students will be encouraged to use a problem from their research as the topic of their course project.  

Instructor: Jonathan Appavoo

 

CS 599 B1: Advanced Natural Language Processing

Prerequisites: at least one of CS365, CS440, CS505, CS523, CS541, CS542, or CS585; or permission of instructor.


Natural language processing (NLP) systems are now ubiquitous: ChatGPT, recommendation systems, machine translation systems, among others are used daily by many people. Advanced natural language processing is a course aimed at students who are interested in learning about the current state-of-the-art techniques, and doing novel research in the field.

The course will focus primarily on deep learning methods for NLP. This includes the Transformer and its alternatives (e.g., state-space models), post-training and test-time compute scaling, model compression, long-context reasoning tasks, and representation steering/engineering, among other topics. Students will read research papers and gain hands-on experience implementing and applying current methods. The course culminates in an original research project, where students will design and run experiments aimed at generating novel insights or addressing a real-world problem.

Instructor: Aaron Mueller

CS 599 G1 : The Geometry of Polynomials in Algorithms

Prerequisites: Strong undergraduate background in probability, analysis, and algorithms. At least one of CS530 or CS537 is recommended .

Description: A classic technique in mathematics is to encode a combinatorial object in the coefficients of a polynomial. For example, given a discrete probability distribution which is {1} with probability 1/2 and {1,2} otherwise, we can associate the polynomial (1/2)xy + (1/2)x. This encoding allows us to study the polynomial’s behavior as a function, its zeros, and how these relate to its coefficients, often revealing structure about our object we might be unable to find otherwise. A major focus of the course will be on real stable and hyperbolic polynomials, generalizations of real rooted polynomials to the multivariate case. After developing a background in this area, we will see how tools from this field relate to problems in algorithms and TCS.

Instructor: Nathan Klein

 

CS 599 M1: Deep Visual Generative Models

Graduate Prerequisites: This course is designed for CS Ph.D., Master, and senior undergraduate students who are interested in deep generative models and their application in computer vision. In order to get the most out of this course, you will need a solid understanding of machine learning, deep learning, and computer vision.

Undergraduate Prerequisites: CS 542 (or 541), CS 585, and CS 523, or permission of instructor.

Content: This graduate-level seminar course delves into deep generative models, with a primary focus on their applications in computer vision (e.g., image and video generation). We will explore variational autoencoders (VAEs), generative adversarial networks (GANs), diffusion models, and autoregressive models, and discuss how these frameworks are applied to diverse visual data formats. We will also cover the foundational models built upon these techniques, including but not limited to the foundation models’ generalization, efficiency, and benchmarking. 

This seminar course is for graduate students ready to explore the latest research frontiers and actively conduct research in this domain.

Instructor: Boqing Gong