{"id":20459,"date":"2025-07-11T17:32:28","date_gmt":"2025-07-11T21:32:28","guid":{"rendered":"https:\/\/www.bu.edu\/cs\/?page_id=20459"},"modified":"2026-04-06T10:11:01","modified_gmt":"2026-04-06T14:11:01","slug":"topics-courses-archive","status":"publish","type":"page","link":"https:\/\/www.bu.edu\/cs\/undergraduate\/courses\/topics\/topics-courses-archive\/","title":{"rendered":"Topics Courses Archive"},"content":{"rendered":"<h3>Topics Courses Archive<\/h3>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Fall 2026 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><br \/>\n<strong><span style=\"text-decoration: underline;\">CS391 R1: Computer and Memory Architectures (must also enroll in R2 or R3 discussion section)<\/span><\/strong><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> CS210 or equivalent<\/span><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> 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.<\/span><\/p>\n<p><b>Course Site: <\/b><a href=\"https:\/\/sites.google.com\/bu.edu\/cs391r1-fall2025\"><span style=\"font-weight: 400;\">https:\/\/sites.google.com\/bu.edu\/cs391r1-fall2025<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Sabrina Neuman<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS391 A1: Web Application Development (must also enroll in A2, A3, A4, or A5 discussion section)<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> CS111, CS112, CS210<\/span><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> 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.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Prof. Taymaz Davoodi<\/span><\/p>\n<h3><span style=\"text-decoration: underline;\"><strong>CS 103 A1 : Introduction to Internet Technologies and Web Programming\u00a0<\/strong><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Introduction to the basic architecture and protocols underlying the operation of the Internet with an emphasis on web design, web application programming, and algorithmic thinking. General familiarity with the Internet is assumed. Carries MCS divisional credit in CAS. Effective Fall 2022, this course fulfills a single unit in each of the following BU Hub areas: Digital\/Multimedia Expression, Quantitative Reasoning II, Creativity\/Innovation.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS392 X1: A faster-paced version of CS112 (Introduction to CS II)<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> 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.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Content: This course largely follows the following book (available on-line for free):<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Algorithms by R. Sedgewick and K. Wayne, 4th edition, 2011.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Hongwei Xi<\/span><\/p>\n<p><strong><span style=\"text-decoration: underline;\">CS 599 M1: Deep Visual Generative Models<\/span><\/strong><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Graduate Prerequisites:<\/strong> 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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Undergraduate Prerequisites<\/strong>: CS 542 (or 541), CS 585, and CS 523, or permission of instructor.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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\u2019 generalization, efficiency, and benchmarking.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This seminar course is for graduate students ready to explore the latest research frontiers and actively conduct research in this domain.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Boqing Gong<\/span><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS501 E2: Mobile Application Development<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> 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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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\u20133 members) and collaborate on a substantial final project.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The course emphasizes a modern, industry-aligned development workflow and integrates the use of AI-assisted development tools (e.g., Android Studio\u2019s AI features) for code generation, documentation, and testing\u2014requiring 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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Ron Czik<\/span><\/p>\n<h3><\/h3>\n<p><strong><span style=\"text-decoration: underline;\">CS 598 A1 : Agentic AI for Everything<\/span><\/strong><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> 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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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!<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Additional details can be found:<\/span><\/p>\n<p><a href=\"https:\/\/docs.google.com\/document\/d\/1RpXJF_8R6H8NGkWSjn1VyNWGFo70U9limEzPWGP3NAI\/edit?usp=sharing\"><span style=\"font-weight: 400;\">https:\/\/docs.google.com\/document\/d\/1RpXJF_8R6H8NGkWSjn1VyNWGFo70U9limEzPWGP3NAI\/edit?usp=sharing<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Chang Xiao<\/span><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS 599 B1: Advanced Natural Language Processing<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites<\/strong>: at least one of CS365, CS440, CS505, CS523, CS541, CS542, or CS585; or permission of instructor.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Aaron Mueller<\/span><\/p>\n<h3><\/h3>\n<p><span style=\"text-decoration: underline;\"><strong>CS 599 G1 : The Geometry of Polynomials in Algorithms<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites<\/strong>: Strong undergraduate background in probability, analysis, and algorithms. At least one of CS530 or CS537 is recommended .<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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&#8217;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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Nathan Klein<\/span><\/p>\n<h3><\/h3>\n<p><span style=\"text-decoration: underline;\"><strong>CS 501 S1 : Agile Mobile Application Development<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Great App Developers are creative, collaborative, thoughtful, understand good design principles and care about their user\u2019s experience. In this highly collaborative course, students will model agile industry design practices to implement rich, cross-platform, data driven applications.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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).\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Shereif El-Sheikh<\/span><\/p>\n<h3><\/h3>\n<p><span style=\"text-decoration: underline;\"><strong>CS 599 A1:\u00a0 Programming Massively Parallel Multiprocessors and Heterogeneous Systems<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> This course is designed for CS PhD students interested in exploring the programming and optimization of GPU software. \u00a0 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.<\/span><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> This graduate course aims to provide hands-on experience in developing applications software for graphics processors with massively parallel computing resources.\u00a0 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++.\u00a0 The initial part <\/span><span style=\"font-weight: 400;\">of the course focuses on popular programming interfaces for these processors.\u00a0 The course continues with a closer view of the internal organization of graphics processors and how it impacts performance.\u00a0 Finally, implementations of applications and algorithms on these processors will be discussed.\u00a0 Students will be encouraged to use a problem from their research as the topic of their course project.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Instructor: Jonathan Appavoo<\/span><\/p>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Spring 2026 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><\/p>\n<p><b><u>CS391 A1: Web Application Development (must also enroll in A2, A3, A4, or A5 discussion section)<\/u><\/b><\/p>\n<p><b>Prerequisites:<\/b><span style=\"font-weight: 400;\"> CS111, CS112, CS210<\/span><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> 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.\u00a0<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Prof. Taymaz Davoodi<\/span><\/p>\n<hr \/>\n<p><b><u>CS391 J1: Programming Massively Parallel Multiprocessors and Heterogeneous Systems \u2013 \u0192ankus<\/u><\/b><\/p>\n<p><b>Prerequisites<\/b><span style=\"font-weight: 400;\">:\u00a0 Required, CS210. Additionally, it is recommended that you have taken CS350 or CS351.<\/span><\/p>\n<p><b>Description<\/b><span style=\"font-weight: 400;\">: While the CPU&#8217;s familiar von Neumman architecture and programming model have dominated general-purpose computing, today&#8217;s systems are heterogeneous.\u00a0 Most incorporate Massively Parallel MultiProcessors, in the form of GPUs.\u00a0 The high-performance data parallel architecture and programming model of the GPU have proven critical in providing the raw computation power required for modern AI computation. Understanding the heterogeneous combination and how to exploit it effectively and practically is the focus of this class.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The course covers &#8220;general purpose&#8221; &#8212; i.e., non-graphical &#8212; programming techniques for GPUs in a heterogeneous system.\u00a0 The course introduces NVIDIA&#8217;s parallel computing language, CUDA, including its programming model and syntax.\u00a0 We also discuss GPU architecture, high-performance computing on GPUs, parallel algorithms, CUDA libraries, and applications of GPU computing.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The focus of the course will be on performance.\u00a0 This is because, for general-purpose parallel programs, GPUs are often used as accelerators to speed up the programs so that they run faster than they would on a multicore CPU.\u00a0 Specifically, the programming assignments and your project will require you to evaluate the various micro-architectural features of GPUs experimentally.\u00a0 This course is not about getting applications run on a GPU using existing libraries and frameworks, but rather about gaining a fundamental understanding of how GPUs work and interact with CPUs concerning performance.<\/span><\/p>\n<p><b>Instructor: <\/b><span style=\"font-weight: 400;\">Prof. Jonathan Appavoo<\/span><\/p>\n<hr \/>\n<p><b><u>CS392 C1: Competitive Programming\u00a0<\/u><\/b><\/p>\n<p><b>Prerequisites<\/b><span style=\"font-weight: 400;\">: CS112, CS131, prior knowledge in C\/C++ or Java<\/span><\/p>\n<p><b>Description<\/b><span style=\"font-weight: 400;\">: This course covers basic algorithms necessary to compete in the ACM International Collegiate Programming Contest (ICPC) and similar contests. Active involvement in weekly contests is a mandatory component of the course. Highly recommended to anyone who wants to prepare for typical fundamental data structure\/algorithm part of a job interview at top IT companies. Topics covered include standard library classes and data structures, competitive programming contest strategies, string manipulation, divide and conquer, dynamic programming, graph algorithms, number theory, computational geometry, and combinatorics.<\/span><\/p>\n<p><b>Textbook<\/b><span style=\"font-weight: 400;\">: <\/span><a href=\"https:\/\/cpbook.net\/details?cp=4\"><span style=\"font-weight: 400;\">https:\/\/cpbook.net\/details?cp=4<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><b>Instructor<\/b><span style=\"font-weight: 400;\">: Prof. Tiago Januario<\/span><\/p>\n<hr \/>\n<p><b><u>CS392 X1: A faster-paced version of CS112 (Introduction to CS II)<\/u><\/b><\/p>\n<p><b>Prerequisites<\/b><span style=\"font-weight: 400;\">: 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.\u00a0<\/span><\/p>\n<p><b>Content<\/b><span style=\"font-weight: 400;\">: This course largely follows the following book (available on-line for free):<\/span><\/p>\n<p><b>Algorithms by R. Sedgewick and K. Wayne, 4th edition, 2011.<\/b><\/p>\n<p><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><b>Instructor<\/b><span style=\"font-weight: 400;\">: Hongwei Xi<\/span><\/p>\n<hr \/>\n<p><b><u>CS501 E1: Mobile Application Development<\/u><\/b><\/p>\n<p><b>Prerequisites: <\/b><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><b>Content: <\/b><span style=\"font-weight: 400;\">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\u20133 members) and collaborate on a substantial final project.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The course emphasizes a modern, industry-aligned development workflow and integrates the use of AI-assisted development tools (e.g., Android Studio\u2019s AI features) for code generation, documentation, and testing\u2014requiring 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.<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Ron Czik<\/span><\/p>\n<hr \/>\n<p><b><u>CS501 S1: Agile Application Development\u00a0<\/u><\/b><\/p>\n<p><b>Content<\/b><span style=\"font-weight: 400;\">: Learn to build cross-platform, data-driven applications using industry-standard design principles. This team-based, hands-on course teaches students to design and develop rich applications with a strong focus on user experience, creativity, and collaboration. Students apply programming skills across multiple languages and frameworks, beginning with .NET.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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 API integration, authentication, multithreading, dependency injection, and advanced C# features like delegates, lambda expressions, and LINQ.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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 isn\u2019t required, but object-oriented programming knowledge, creativity, and teamwork are essential.<\/span><\/p>\n<p><b>Instructor<\/b><span style=\"font-weight: 400;\">: Shereif El-Sheikh<\/span><\/p>\n<hr \/>\n<p><b><u>CS 598 G1: AI, Cybersecurity and Entrepreneurship\u00a0<\/u><\/b><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> This course will explore technology entrepreneurship with a specific focus on AI and cybersecurity companies. The goal is to learn about the technology behind the latest cybersecurity and AI companies alongside the business considerations involved in building these companies from the ground up.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Topics we cover include product design, business models, product-market fit, basic sales and marketing frameworks, startup financing, fundraising metrics and different stages in the startup life cycle (pre-Seed, Seed, Series A, Series B. . . ). \u00a0 We will also have a substantial number of guest lectures from local startup founders, entrepreneurs, investors and executives.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Evaluation is based mostly on hands-on labs and course projects that involve analyzing the latest exciting cybersecurity and AI startups.\u00a0 Some of the examples of companies we discussed in depth last year include Tailscale, Twingate, Jumpcloud, Wiz, AppMap, and HYPR.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This course fulfills the CS Group D requirement for undergraduates.\u00a0 If you are a student in the minor in Entrepreneurship and Innovation, the professor will work with you to get this course included in your minor.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The course is taught by Prof. Sharon Goldberg, who was the co-founder and CEO of a cybersecurity startup, BastionZero, that was acquired by Cloudflare in May 2024. She is also an infrastructure cybersecurity researcher and has been a tenured professor in the CS department at BU since 2010.\u00a0<\/span><\/p>\n<p><b>Instructor: <\/b><span style=\"font-weight: 400;\">Sharon Goldberg<\/span><\/p>\n<hr \/>\n<p><b><u>CS598 P1: Multimodal Machine Learning (must also enroll in P2-P3 discussion section)<\/u><\/b><\/p>\n<p><b>Prerequisites: <\/b><span style=\"font-weight: 400;\">CS542 (Machine Learning) or equivalent<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Many applications of artificial intelligence rely on reasoning about data from many different sources (e.g., images, video, language, sound, infrared, Lidar, etc).\u00a0 This course serves as an introduction to methods that aim at using the fusion of these data sources to accomplish downstream tasks.\u00a0 For example, automatically captioning an image requires reasoning about visual and text data, a robot searching for a person lost in a cave may rely on infrared and sound, and autonomous vehicles may use Lidar and video information.\u00a0 This class will explore machine learning and statistical techniques that aim to understand the relationship between modalities.\u00a0 Students will also learn about some of the common issues that arise when dealing with multiple modalities such as data scarcity,\u00a0 positive-unlabeled learning, structured prediction, and the challenges in evaluating these systems.<\/span><\/p>\n<p><b>Professor:<\/b><span style=\"font-weight: 400;\"> Bryan Plummer<\/span><\/p>\n<p><b>Course site: <\/b><span style=\"font-weight: 400;\">See link on https:\/\/www.bryanplummer.com\/<\/span><\/p>\n<hr \/>\n<p><b><u>CS 598 X1: Human-Computer Interaction and Human-AI Interaction<\/u><\/b><\/p>\n<p><b>Prerequisites:<\/b><span style=\"font-weight: 400;\">\u00a0 Required, CS365 or CS440\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Content: <\/span><span style=\"font-weight: 400;\">This course examines two fields, HCI and AI, once described as \u201ctwo fields divided by a common focus.\u201d Historically, they often competed for intellectual and economic resources, but today their convergence is increasingly important. This course explores that convergence by combining classic HCI principles with the latest developments in HAI and AI agents.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The first half of the course introduces the foundations of HCI: usability principles, interaction techniques, design heuristics, and methodologies for conducting user studies. Students will gain hands-on experience with both quantitative and qualitative research methods, learning how to rigorously evaluate systems from a human-centered perspective.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The second half shifts toward human-centered AI and the rapidly evolving frontier of AI agents and large language models. Topics include prompt engineering, AI interface design, Agentic AI workflow and emerging methods such as simulating user studies with AI. Students will learn to analyze, design, and evaluate AI-powered systems through the lens of HCI, bridging the gap between theory and practice.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Students will complete several assignments and a final project, gaining skills in both rigorous HCI methodology and frontier approaches to building and evaluating AI systems. This lecture-based course prepares students to design, analyze, and critically engage with modern AI-powered systems from a human-centered perspective.<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Chang Xiao\u00a0<\/span><\/p>\n<hr \/>\n<p><b><u>CS 599 A1: Logic and Programming Languages<\/u><\/b><\/p>\n<p><b>Prerequisites: <\/b><span style=\"font-weight: 400;\">Required: CS 131, CS 210. Recommended: CS 320<\/span><\/p>\n<p><b>Content:<\/b> <b>What is truth?<\/b><span style=\"font-weight: 400;\"> In constructive logic, a proof isn\u2019t just a certificate that something is true \u2014 it\u2019s also an explicit construction or algorithm. This course introduces constructive (or intuitionistic) logic, a foundation for mathematics and computer science that emphasizes proofs as constructive evidence rather than abstract truth. Students will explore the principles that distinguish constructive logic from classical logic, including the rejection of the law of excluded middle and the requirement that proofs yield explicit witnesses.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The course will cover:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Natural deduction systems for propositional and predicate constructive logic<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The Curry\u2013Howard correspondence between proofs and programs<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Sequent calculus and proof normalization<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Connections to type theory and functional programming languages<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Proof Search, Inversion, and Focusing<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Applications to Logic Programming Languages like Prolog<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Linear Logic and Rust<\/span><\/li>\n<\/ul>\n<p><b>Who should take it? <\/b><span style=\"font-weight: 400;\">Students interested in mathematics, computer science, philosophy, or anyone curious about the foundations of reasoning and computation, or wants to get a deeper understanding of the inner workings of a \u201cgood\u201d programming language.<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Ankush Das<\/span><\/p>\n<hr \/>\n<p><b><u>CS 599 G1: Deep Visual Generative Models<\/u><\/b><\/p>\n<p><b>Graduate Prerequisites<\/b><b>: <\/b><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><b>Undergraduate Prerequisites:<\/b><span style=\"font-weight: 400;\"> CS 542 (or 541), CS 585, and CS 523, or permission of instructor.<\/span><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> 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&#8217; 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.<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Boqing Gong<\/span><\/p>\n<hr \/>\n<p><b><u>CS 599 K1: The Theory and Practice of Tractable Programming<\/u><\/b><\/p>\n<p><b>Prerequisites: <\/b><span style=\"font-weight: 400;\">This course is designed for CS PhD, Masters, and senior undergraduate students that are interested in the intersection of theory and systems. In order to get the most out of this course, you will need a solid understanding of complexity, data structures, and algorithms.\u00a0 Undergraduate Prerequisites: CS 210, and CS 330, or permission of instructor.<\/span><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> In this course, we will explore powerful programming paradigms like SQL, tensor algebra, and constraint programming. These paradigms offer simple data models with relatively few programming constructs. This encourages users to write succinct declarative code, entrusting the system to automatically generate an efficient implementation. We will uncover the strong theoretical foundations of these systems, and see how real-world implementations leverage (or fail to leverage) these foundations. In general, the programming languages that we consider can be viewed as extensions of first-order logic, and we will leverage this common theoretical view to analyze the complexity of programs across these paradigms. Moreover, we will see how the same practical problems arise again and again across these fields and tease apart the different solutions that they adopted to solve them.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As a graduate seminar,\u00a0 this course will be a combination of lectures and paper reading. The lectures will typically go over the theory, and the papers will describe an implementation of that theory in practice. Students will read and present research papers, and they will complete a final systems project where they write an optimizer for tensor algebra programs.<\/span><\/p>\n<p><b>Instructor: <\/b><span style=\"font-weight: 400;\">Kyle Deeds <\/span><\/p>\n<p><span style=\"font-weight: 400;\"><\/span><\/p>\n<hr \/>\n<p><b><u>CS 599 L1: Fine-Grained Complexity and its Applications<\/u><\/b><\/p>\n<p><b>Prerequisites: Required:<\/b><span style=\"font-weight: 400;\"> CAS CS 332 (theory of computation, or equivalent at other university), CAS CS 330 (introduction to algorithms, or equivalent at other university), mathematical maturity<\/span><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> Ever wondered why the longest common subsequence problem takes n^2 time to solve? Why can&#8217;t we do it in linear time? What about finding the diameter of a graph? It turns out there&#8217;s a shared reason for the hardness of these problems! Learn about the fine-grained hardness of computational problems in this class.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Fine-grained complexity studies the constants in the exponents of algorithms. We will give techniques for achieving conditional lower bounds on problems like diameter, sparse all-pairs shortest paths, longest common subsequence, and more. This class will also cover techniques for worst-case to average-case reductions in fine-grained complexity, lower bounds for dynamic problems, and other applications of fine-grained complexity. The primary tool in this class is hardness reductions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Mathematical maturity and familiarity with reductions (e.g., NP-hardness reductions) will be expected for this class.<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Andrea Lincoln<\/span><\/p>\n<hr \/>\n<p><b><u>CS599 N1: Designing Hardware with Software: Accelerators and Advanced Computer Architecture<\/u><\/b><\/p>\n<p><b>Graduate Prerequisites:<\/b><span style=\"font-weight: 400;\"> An introductory-level course in computer organization\/architecture, or permission of the instructor.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><b>Undergraduate Prerequisites:<\/b><span style=\"font-weight: 400;\"> CS350 or CS351 or CS391R1 (Computer and Memory Architectures), or equivalent advanced-level computer systems course.<\/span><\/p>\n<p><b>Content:<\/b><span style=\"font-weight: 400;\"> Today, emerging applications in AI\/ML, robotics, genomics, and more are being powered by novel hardware accelerators that can deliver high performance and energy efficiency. But designing accelerators by hand using traditional manual methods (e.g., Verilog and other hardware description languages) can be time-consuming, tedious, and error prone. To solve these problems and enable agile accelerator design, there is great interest across industry and academia in answering the question: How can we design hardware using the desirable automation, modularity, user-friendliness, and verification features common in software design?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this lab and project-based graduate-level class, we will: (1) introduce modern high-level design techniques to develop hardware with software, including a combination of traditional Verilog design alongside high-level synthesis (HLS) tools that allow users to generate hardware accelerators automatically from software programs; and use these tools to (2) explore advanced computer architecture principles and the process of designing accelerators for different applications. The practical component of the class features lab assignments where students will exercise advanced architecture techniques using Verilog and C-to-FPGA tools for accelerator design, emphasizing sound design and testing practices. The class concludes with a research-oriented final project where students will work in small groups, supervised by course staff and project mentors. Topics include Verilog design, C-based HLS tools, spatial and temporal parallelism, pipelining, customized memory architectures, spatial architectures for AI\/ML acceleration, modular design, meeting timing and area constraints, infrastructure for testing designs, and FPGA-based implementation. Additional topics may include optimization underpinnings of HLS, parameterized design methodologies, and alternative hardware description languages and compilers.<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Sabrina Neuman<\/span><\/p>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Fall 2025 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><\/p>\n<p><b>CS391 A1: Web Application Development (must also enroll in A2, A3, A4, or A5 discussion section)<\/b><\/p>\n<p><b>Prerequisites:<\/b><span style=\"font-weight: 400;\"> CS111, CS112, CS210<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> 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.\u00a0<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Prof. Taymaz Davoodi<\/span><\/p>\n<hr \/>\n<p><b>CS 391 BA\/BB: Responsible AI<\/b><\/p>\n<p><b>Prerequisites:<\/b><span style=\"font-weight: 400;\"> Probability (e.g., CS 237 or DS 122), algorithms (e.g., CS 330 or DS 320), and the basics of machine learning (e.g., CS 365 or DS 340). Additional background in AI, machine learning, or statistics is helpful but not required. Students from programs outside CS and DS are welcome but should contact the instructors regarding prerequisites.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> Technological advances in how information is generated, collected, managed, and analyzed raise a variety of societal concerns. This course will explore how to use mathematical methods to articulate some of these challenges formally, reason about them rigorously, and design algorithms to mitigate them. Topics include data privacy, fairness in algorithmic learning and decision-making, evaluation and interpretation of complex machine learning models, feedback loops in data-driven systems, and strategic behavior. An emphasis will be placed on understanding the challenges arising from modern machine learning, such as through large language models.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The course, which is aimed at advanced undergraduates in computer science, data science, ECE, or statistics, will engage with both technical components of the problem area (involving programming and theoretical problems) as well as questions in policy and ethics (involving reading, discussing, and writing about papers from those areas).<\/span><\/p>\n<p><b>Instructors:<\/b><span style=\"font-weight: 400;\"> Mark Bun and Adam Smith.<\/span><\/p>\n<hr \/>\n<p><b>CS391 R1: Computer and Memory Architectures (must also enroll in R2 or R3 discussion section)<\/b><\/p>\n<p><b>Prerequisites:<\/b><span style=\"font-weight: 400;\"> <span>CS210 or equivalent<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> 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.<\/span><\/p>\n<p><strong>Course Site: <\/strong><a href=\"https:\/\/sites.google.com\/bu.edu\/cs391r1-fall2025\">https:\/\/sites.google.com\/bu.edu\/cs391r1-fall2025<\/a><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Sabrina Neuman<\/span><\/p>\n<hr \/>\n<p><span><b><span style=\"text-decoration: underline;\">CS391 S1 Spark! Software Engineering Immersion (must also enroll in S2 or S3 discussion section)<\/span><\/b><\/span><\/p>\n<p><span><strong>Prerequisites:<\/strong> CS111, prior knowledge of Python &amp; Javascript helpful<\/span><\/p>\n<p><span><span style=\"font-weight: 400;\"><strong>Content:<\/strong> <\/span>Students will be introduced to all concepts required to work on a modern web development project. This course is intentionally taught with very little prerequisite knowledge to enable students to begin learning these skills earlier in their college path. Students begin by learning basic skills required to build a functioning web application. During the second half of the course, students will be allocated to teams and assigned a project to work on over the course of the semester. Students will submit their final application as their final project on the last day of classes.<\/span><\/p>\n<p><span><strong>Instructors:<\/strong> Michael Levinger, Uwe Meding, Langdon White<\/span><\/p>\n<hr \/>\n<p><b>CS 392 D2: Competitive Programming II<\/b><\/p>\n<p><b>Prerequisites<\/b><span style=\"font-weight: 400;\">: CS112, CS131 required (CS330 is recommended) or permission of the instructor.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> The second Competitive Programming course is designed for computer science majors and anyone seeking advanced topics covered in programming competitions and technical interviews. It covers advanced programming techniques and data structures with C++, Python, and Java examples. Topics include number theory, probability theory, string processing, square root algorithms, computational geometry, advanced dynamic programming techniques, and graph algorithms. More information can be found on the course website: <\/span><a href=\"https:\/\/cs-people.bu.edu\/januario\/teaching\/cs392\/fa25\/\"><span style=\"font-weight: 400;\">https:\/\/cs-people.bu.edu\/januario\/teaching\/cs392\/fa25\/<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><b>Instructor<\/b><span style=\"font-weight: 400;\">: Tiago Januario<\/span><\/p>\n<hr \/>\n<p><b>\u00a0<\/b><b><\/b><span style=\"font-weight: 400;\"><\/span><\/p>\n<p><strong><span style=\"text-decoration: underline;\"><b>CS392 M1 \u00a0Rust, in Practice and in Theory<\/b><\/span><\/strong><\/p>\n<p><span><strong>Prerequisites:<\/strong> CS210, CS320<\/span><br \/>\n<span>\u00a0<\/span><br \/>\n<span><span style=\"font-weight: 400;\"><strong>Content:<\/strong> <\/span>Rust is a type-safe, memory-safe programming language that is becoming a popular alternative to C and C++ in settings where performance and memory usage are major concerns.\u00a0 It&#8217;s self-described as having &#8220;high-level ergonomics&#8221; and &#8220;low-level control.&#8221; Practically speaking, this means clear, concise code with fewer memory bugs.\u00a0 Theoretically speaking, this means the use of a rich type system based on the notion of linearity to enforce memory-safety before any code has actually been run. <\/span><span>Despite its popularity, Rust is still daunting to learn, even for experienced programmers.\u00a0 There are several concepts in Rust that don&#8217;t appear in any other popular languages.\u00a0 And even if you become a proficient Rust programmer, it doesn&#8217;t mean you have a deep understanding of how Rust works, or why it is a better alternative to other low-level languages. <\/span><span>In this course, we&#8217;ll spend the first half of the semester learning Rust.\u00a0 This can include topics like borrowing, lifetimes, traits, smart pointers, and concurrency.\u00a0 We&#8217;ll spend the second half implementing a subset of Rust.\u00a0 This will help us better understand the details of Rust\u2019s type system and borrow checker.<\/span><\/p>\n<p><span><strong>Instructor:<\/strong> Nathan Mull<\/span><\/p>\n<hr \/>\n<p><b>CS392 X1: Advanced Data Structures in Java<\/b><\/p>\n<p><strong>Prerequisites:<\/strong><span style=\"font-weight: 400;\"> CS111 and proficiency in Java.<\/span><span style=\"font-weight: 400;\">\u00a0You are expected to be familiar with a text editor (e.g., VIM and EMACS).<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> This course starts by quickly revisiting and then building upon basic programming concepts in Java. Then, 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 in the the object-oriented programming language Java. The emphasis in teaching this course centers around the following:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Developing elegant and efficient code from an abstract specification;<\/span><\/li>\n<\/ol>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Literate programming (writing programs that can be read by humans as well as machines);<\/span><\/li>\n<\/ol>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Developing a toolbox of advanced data structures for use in your future programming tasks, and an awareness of various design patterns that recur frequently in advanced programming;<\/span><\/li>\n<\/ol>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Critical thinking about programs and the programming process, which involves:<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">4.1. Thinking about the best way to plan out the design using object-oriented design and appropriate features of Java;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">4.2. Methodical and efficient development of the implementation using step-wise refinement and incremental testing and debugging (using appropriate debugging tools);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">4.3. Being able to convince yourself of the correctness of the implementation by mathematical reasoning;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">4.4. Analyzing the running time (efficiency) of programs by inspection and <\/span> <span style=\"font-weight: 400;\">mathematical reasoning; and<\/span><\/p>\n<p><span style=\"font-weight: 400;\">4.5. Evaluating the efficiency and correctness of programs empirically, by using various tools in properly designed experiments.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This course is designed as a faster-paced version of CS112; it suits those who have already had considerable experience with programming in general and Java programming in particular.<\/span><\/p>\n<p><b>Instructor: <\/b>Hongwei Xi<\/p>\n<hr \/>\n<p><b>CS501 E1 or E2: Topics in Computer Science: Mobile Application Development<\/b><\/p>\n<p><b>Prerequisites: <\/b><span style=\"font-weight: 400;\">No previous mobile application development experience is required, but a strong understanding of object-oriented programming<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Kotlin, JetPack, and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small teams of 2-3, collaborating on a larger final project. Topics will include UI development, navigation, using third party APIs, data persistence, and gestures. Note: Students should register for either the E1 or E2 section other, but not both<\/span><\/p>\n<p><b>Instructor<\/b><span style=\"font-weight: 400;\">: Ron Czik<\/span><\/p>\n<hr \/>\n<p><b>CS501 S1 \u2013 Agile Client\/Server Application Development<\/b><\/p>\n<p><b>Prerequisites: <\/b>CAS CS 112 and CS210; or consent of instructor<\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> Students will model agile software engineering practices used in industry to design and implement data driven applications primarily using C# and the .NET Framework and a front end of their choosing, which can include Angular, React or .NET Maui.\u00a0 The goal is to develop a Novel Final App that can be used to showcase student learning.\u00a0 Final Apps can either be mobile or pc based.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The course will not solely be taught in C#, several other languages will be utilized and compared and contrasted.\u00a0 Students will start by implementing several simple programs, focusing on data driven UI components and event based programming, after which students will be grouped into small teams, collaborating on their Final App.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As the course proceeds students will begin looking at more complex topics including fundamental design patterns, while implementing more complex applications.\u00a0 Topics will include: working with databases, authentication, multithreading, layered exception handling, dependency injection, delegates, lambda expressions and language integrated queries.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As the course proceeds into its second half, students will be required to perform their own research and development as they choose which RESTful 3rd party APIs to incorporate into their final project.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">No previous application development experience is required, but creativity and a willingness to perform independent research is required.\u00a0 A strong understanding of object-oriented programming is also required.<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">This will be a highly interactive, project oriented and team based course. Attendance, participation and collaboration are mandatory and part of your grade.\u00a0<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Shereif El-Sheikh<\/span><\/p>\n<hr \/>\n<p><b>CS 599 A1:\u00a0 Programming Massively Parallel Multiprocessors and Heterogeneous Systems<\/b><\/p>\n<p><b>Prerequisites: <\/b>This course is designed for CS PhD students interested in exploring the programming and optimization of GPU software. \u00a0 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.<\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> This graduate course aims to provide hands-on experience in developing applications software for graphics processors with massively parallel computing resources.\u00a0 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++.\u00a0 The initial part<\/span><\/p>\n<p><span style=\"font-weight: 400;\">of the course focuses on popular programming interfaces for these processors.\u00a0 The course continues with a closer view of the internal organization of graphics processors and how it impacts performance.\u00a0 Finally, implementations of applications and algorithms on these processors will be discussed.\u00a0 Students will be encouraged to use a problem from their research as the topic of their course project.\u00a0\u00a0<\/span><\/p>\n<h3><\/h3>\n<p><b>Instructor<\/b><span style=\"font-weight: 400;\">: Jonathan Appavoo<\/span><\/p>\n<hr \/>\n<p><b>CS 599B1:\u00a0 Networks and Markets<\/b><\/p>\n<p><strong>Prerequisites:<\/strong> This course is designed for declared CS and DS majors who are fulfilling 400-level electives.\u00a0 For CS students: CS 112, CS 131, and some knowledge of probability and statistics is required. CS 330 or equivalent is suggested as a co-requisite.\u00a0 For DS students: DS210, DS122 is required. DS320 is suggested as a co-requisite.<br \/>\nWhile students&#8217; backgrounds will vary, it is expected that students are nearing completion of an undergraduate CS or DS major.<\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> The concept of a network has expanded beyond interconnected machines to encompass diverse applications emphasizing connectedness.\u00a0 Biological networks, social networks, online advertising networks, and networks involving hyperlinks are all examples of domains which now apply the theory and practice of network science. In parallel, online markets have emerged as key facilitators of commercial activity, from early platforms like eBay with online auctions to modern markets such as pay-per-click advertising, prediction markets, and two-sided platforms like Uber and Airbnb. These application domains draw deeply on established methodologies that are familiar to computer scientists, notably graph theory and algorithms. However, they also build on theoretical foundations that are less familiar to most computer scientists, such as auction design, mechanism design, and the theory of matching markets. Finally, many modern technologies integrate both networks and markets, such as information networks and recommender systems.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this class, we will build upon the undergraduate text of Easley and Kleinberg to learn about the underlying theory of networks and markets, understand how modern-day digital applications connect to these foundations, and conduct our own independent projects to explore an aspect of a digital market more deeply.<\/span><\/p>\n<p><b>Instructor<\/b><span style=\"font-weight: 400;\">: John Byers<\/span><\/p>\n<hr \/>\n<p><b>CS 599 E1: Algorithms for Machine Learning<\/b><\/p>\n<p><b>Prerequisites:<\/b><span style=\"font-weight: 400;\"> Strong undergraduate-level knowledge of algorithms, probability, multivariate calculus and linear algebra. It is recommended but not required to have taken a graduate-level algorithms or machine learning course such as CS 530, 531, 537, 542, or 523.<\/span><\/p>\n<p><b>Description:<\/b><span style=\"font-weight: 400;\"> This is a special topics course focused on the design of efficient algorithms for building modern machine learning models at scale. We will aim to cover topics such as adaptive gradient descent algorithms, dimensionality reduction techniques, algorithms for nearest neighbor search and retrieval augmented generation, and algorithms for training and fine-tuning foundational models. The course will emphasize recent algorithmic developments for state of the art deep learning models and highlight directions for future research.<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Alina Ene<\/span><\/p>\n<hr \/>\n<h3><b>CS599 G1: Advanced Topics in Computer Vision<\/b><\/h3>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> This is a graduate seminar course in computer vision and machine learning. As part of the course, students will survey and discuss current vision papers relating to advancements made in varied topics like deep-learning based architectures, generative vision models, multimodal learning, 3D vision, fairness and safety, reinforcement learning, and so on. The goals of the course will be to understand current approaches to some important problems, to actively analyze their strengths and weaknesses, and to identify interesting open questions and possible directions for future research. <\/span><span style=\"font-weight: 400;\">The majority of the course will consist of student presentations, experiments, and paper discussions interspersed with some lectures.<\/span><span style=\"font-weight: 400;\"> Students will be responsible for writing two paper reviews each week, participating in discussions during class, presenting one experiment from assigned papers, presenting an assigned paper in depth, and \u00a0 completing a research-oriented final project with a partner. <a href=\"https:\/\/docs.google.com\/document\/d\/1E6-L6qpvpyOgCo-XHZPRJqrxjbYE502B8RrOrB9WcfU\/pub\">A syllabus from Fall 2024 can be viewed here<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong>\u00a0<\/span><span style=\"font-weight: 400;\" data-rich-links=\"{&quot;per_n&quot;:&quot;Deepti Ghadiyaram&quot;,&quot;per_e&quot;:&quot;deepti@runwayml.com&quot;,&quot;type&quot;:&quot;person&quot;}\">Deepti Ghadiyaram<\/span><\/p>\n<hr \/>\n<p><b>CS 599 M1: Interpretable Machine Learning<\/b><\/p>\n<p><b>Prerequisites: <\/b>CS542 or CS541<span style=\"font-weight: 400;\">\u00a0or equivalent<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Content:<\/strong> AI systems have advanced remarkably in recent years, but they have also grown more opaque. For example, ChatGPT and DeepSeek seem intelligent on the surface, but what have they really learned? Why and how do they make the decisions that they do? The ability to answer questions like these is critical in applications like healthcare or legal systems. This research seminar course explores the field of interpretable machine learning, which seeks to understand the internal computational processes of machine learning models\u2014and sometimes, to precisely control these processes. We will cover foundational and cutting-edge topics, including distributed representations, attribution methods, and the emerging field of mechanistic interpretability. We will also cover open problems, such as interpretability illusions and challenges in evaluation. Students will read and present research papers, lead and participate in discussions on these topics, and conduct an interpretability research project.<\/span><\/p>\n<p><b>Instructor:<\/b><span style=\"font-weight: 400;\"> Aaron Mueller<\/span><\/p>\n<div>\n<hr \/>\n<p class=\"p1\"><strong><span class=\"s1\">CS 599 P1: Introduction to Quantum Computation<\/span><\/strong><\/p>\n<\/div>\n<p><strong>Prerequisite<\/strong>: B+ or higher in CS 132 or MA 242; or permission of instructor.<\/p>\n<p><strong>Content:<\/strong> This course explores the fundamental principles of quantum computation, an emerging area at the intersection of quantum mechanics and computer science. Students will be introduced to key concepts in quantum theory, including superposition and entanglement, and computation, such as circuits and logical gates. The curriculum will cover essential algorithms such as Grover&#8217;s and Shor&#8217;s, and selected additional topics as time permits.<br \/>\nDesigned for beginners, this course requires no prior knowledge of quantum physics or advanced mathematics\u2014making it accessible to graduate students and advanced undergraduates\u00a0who are curious about the potential of quantum technologies. Nevertheless, a solid background in linear algebra is strongly recommended.<\/p>\n<p>By the end of the course, students will grasp how quantum computers differ from classical ones, and how they can solve complex problems in science, cryptography, and beyond.<\/p>\n<p><strong>Instructor<\/strong>: Alexander Poremba<\/p>\n<hr \/>\n<p><strong>CS 599 X1: AI Agents and Human-AI Interaction<\/strong><\/p>\n<p><span><strong>Prerequisites<\/strong>: Students must have completed any one of CS 440, CS 480, CS 505, or CS 532 with a grade of B+ or higher, or obtain permission from the instructor. Strong programming skills are also required.<\/span><\/p>\n<p><strong>Content: <\/strong><span>Large language models (LLMs) like ChatGPT have opened up exciting new possibilities for how humans interact with AI. Beyond chatbots, LLMs are now being used to build AI agents: systems that can interpret instructions, take actions, and perform concrete tasks across a range of applications. Have you ever wondered how these AI agents work under the hood, how to build your own, or how to apply them meaningfully to real-world problems? This research seminar course explores the design, development, and study of interactive AI systems, situated within the broader field of human-computer interaction (HCI).<\/span><\/p>\n<p><span>Students will begin by gaining foundational knowledge of how modern AI agents\u2014especially those powered by LLMs\u2014are constructed and deployed. Topics will include foundations of LLMs, prompt engineering, AI tool use, reasoning and planning, and grounding in user context. From there, the course will examine real-world applications of AI agents, including programming, creative collaboration, tutoring, assistive technologies, AR\/VR, and more.<\/span><\/p>\n<p><span>The course will be conducted in seminar format, combining instructor-led lectures, guest talks, and student-led paper presentations on cutting-edge research in human-AI interaction. Students will also complete a final project (individually or in teams) to design and implement their own interactive AI agent.<\/span><\/p>\n<p><span>In addition to technical content, this course introduces students to the fundamentals of conducting research in HCI and AI: how to form a research question, identify related work, design and evaluate a research prototype, and communicate findings. Students will gain experience with reading and critiquing academic papers, leading discussions, and conducting exploratory research. More information can be found on the course site: <a href=\"https:\/\/bu-cascs-599-x1-fall25.vercel.app\/\">https:\/\/bu-cascs-599-x1-fall25.vercel.app\/<\/a><\/span><\/p>\n<p><span><strong>Instructor<\/strong>: Chang Xiao<\/span><\/p>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Spring 2025 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><\/p>\n<p><b><span style=\"text-decoration: underline;\">CS391 A1: <\/span><\/b><strong><span style=\"text-decoration: underline;\">Web Application Development (<span>must also enroll in A2, A3, A4, or A5 discussion section)<\/span><\/span><\/strong><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> CS111, CS112, CS210<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Prof. Taymaz Davoodi<\/span><\/p>\n<hr \/>\n<p><b><span style=\"text-decoration: underline;\">CS391 R1: <strong>Computer &amp; Memory Architectures <span>(must also enroll in R2 or R3 discussion section)<\/span><\/strong><\/span><\/b><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong>\u00a0CS350<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This course covers key concepts concerning the design and operation of modern computing and memory architectures, with an emphasis on hands-on experimentation and evaluation. The course first covers the design of central processing units (CPU), going from single-cycle designs to pipelined architectures. Next, multi-core CPUs are reviewed, along with private caches and cache coherence protocols. The course then dives into the design of high-performance memory subsystems. We, therefore, review modern multi-level cache hierarchies, bus architectures, and protocols. Finally, we study the design of main memory technologies such as DRAM. The course also touches on the interaction between processing units and Input\/Output (I\/O) devices through modern high-throughput interfaces such as USB and PCI-Express. The practical component of the course will cover the development of hardware modules using System Verilog.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Prof. Renato Mancuso<\/span><\/p>\n<hr \/>\n<p><span><b><span style=\"text-decoration: underline;\">CS391 S1 Spark! Software Engineering Immersion (must also enroll in S2 or S3 discussion section)<\/span><\/b><\/span><\/p>\n<p><span><strong>Prerequisites:<\/strong> CS111, prior knowledge of Python &amp; Javascript helpful<\/span><\/p>\n<p><span>Students will be introduced to all concepts required to work on a modern web development project. This course is intentionally taught with very little prerequisite knowledge to enable students to begin learning these skills earlier in their college path. Students begin by learning basic skills required to build a functioning web application. During the second half of the course, students will be allocated to teams and assigned a project to work on over the course of the semester. Students will submit their final application as their final project on the last day of classes.<\/span><\/p>\n<p><span><strong>Instructors:<\/strong> Michael Levinger, Uwe Meding, Langdon White<\/span><\/p>\n<hr \/>\n<p><b><span style=\"text-decoration: underline;\"><strong>CS391 T1: Algorithms to live by (must also enroll in T2 or T3 discussion section)<span><br \/>\n<\/span><\/strong><\/span><\/b><br \/>\n<span><strong>Prerequisites:<\/strong> <\/span><span>CS112, CS131, CS237<\/span><\/p>\n<p><span>The course will be based on the algorithmic principles described in the popular science book \u201cAlgorithms to Live By: The Computer Science of Human Decisions\u201d by Brian Christian and Tom Griffiths.\u00a0 We will cover concepts such as (1) optimal stopping (2) Explore vs. Exploit (3) Sorting and Searching (4) Caching and Memory (5) Game theory and Decision making (6) Handling overwhelm and staying sane.\u00a0 We will discuss the main algorithmic techniques and results related to these concepts and how we can apply them to everyday life. <\/span><\/p>\n<p><span><strong>Instructor:<\/strong> Evimaria Terzi<\/span><\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><b>CS392 C1: Competitive Programming I<\/b><\/span><\/p>\n<p><em><strong>**Previously posted as CS392 B1**<\/strong><\/em><\/p>\n<p><strong>Prerequisites: <\/strong><span style=\"font-weight: 400;\">CS111, prior knowledge in C\/C++ or Java\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This course covers advanced algorithms necessary to compete in the ACM International Collegiate Programming Contest (ICPC) and similar contests. Active involvement in weekly contests is a mandatory component of the course. Topics covered include standard library classes and data structures, competitive programming contest strategies, string manipulation, divide and conquer, dynamic programming, graph algorithms, number theory, computational geometry, and combinatorics.<\/span><\/p>\n<p><b>Professor:<\/b> Tiago Januario<\/p>\n<p><strong>Course Website:<\/strong> https:\/\/cs-people.bu.edu\/januario\/teaching\/CS392\/sp25\/index.html<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><b>CS392 E1<\/b><strong>: <\/strong><\/span><strong><u>Windows .NET Application Programming with C#<\/u><\/strong><span style=\"text-decoration: underline;\"><b><\/b><\/span><\/p>\n<p><strong>Prerequisites: <\/strong><span style=\"font-weight: 400;\">CAS CS112<\/span><strong><\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Students will utilize agile software engineering practices in this hands-on course to design and implement data driven applications using C# and the .NET Framework.\u00a0 We will start by comparing and contrasting the .NET framework with other frameworks as well as native code, exploring the advantages and drawbacks of running code in managed vs. unmanaged environments.\u00a0 Students will subsequently design and implement several simple C# programs, focusing on data driven UI components and event based programming, after which students will be grouped into small teams, collaborating on a larger final project. <\/span><span style=\"font-weight: 400;\">As the course proceeds students will begin looking at more complex topics including fundamental design patterns, while implementing more complex applications.\u00a0 Topics will include: reading and writing from files\/streams\/databases, exception handling, multithreading, memory management, networking, delegates, generics and LINQ.\u00a0 Students will also perform their own research and development as they choose which 3<\/span><span style=\"font-weight: 400;\">rd<\/span><span style=\"font-weight: 400;\"> party APIs to incorporate into their final project. <\/span><span style=\"font-weight: 400;\">No previous application development experience is required, but a very strong understanding of object-oriented programming is required. <\/span><span style=\"font-weight: 400;\">The syntax for C#, Java, and C++ are nearly identical.\u00a0 Students will be expected to leverage their understanding of Java and\/or C++ syntax to help pivot to C#. <\/span><b>This will be a highly interactive, project oriented and team based course. Attendance, participation and collaboration are mandatory and part of your grade.\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400;\"><b>Instructor:<\/b>\u00a0 Shereif El-Sheikh<\/span><span style=\"text-decoration: underline;\"><b><br style=\"font-weight: 400;\" \/><\/b><\/span><\/p>\n<hr \/>\n<p><strong><span style=\"text-decoration: underline;\"><b>CS392 M1 \u00a0Rust, in Practice and in Theory<\/b><\/span><\/strong><\/p>\n<p><span><strong>Prerequisites:<\/strong> CS210, CS320<\/span><br \/>\n<span>\u00a0<\/span><br \/>\n<span>Rust is a type-safe, memory-safe programming language that is becoming a popular alternative to C and C++ in settings where performance and memory usage are major concerns.\u00a0 It&#8217;s self-described as having &#8220;high-level ergonomics&#8221; and &#8220;low-level control.&#8221; Practically speaking, this means clear, concise code with fewer memory bugs.\u00a0 Theoretically speaking, this means the use of a rich type system based on the notion of linearity to enforce memory-safety before any code has actually been run. <\/span><span>Despite its popularity, Rust is still daunting to learn, even for experienced programmers.\u00a0 There are several concepts in Rust that don&#8217;t appear in any other popular languages.\u00a0 And even if you become a proficient Rust programmer, it doesn&#8217;t mean you have a deep understanding of how Rust works, or why it is a better alternative to other low-level languages. <\/span><span>In this course, we&#8217;ll spend the first half of the semester learning Rust.\u00a0 This can include topics like borrowing, lifetimes, traits, smart pointers, and concurrency.\u00a0 We&#8217;ll spend the second half implementing a subset of Rust.\u00a0 This will help us better understand the details of Rust\u2019s type system and borrow checker.<\/span><\/p>\n<p><span><strong>Instructor:<\/strong> Nathan Mull<\/span><\/p>\n<hr \/>\n<p><b><span style=\"text-decoration: underline;\">CS392 X1: <\/span><\/b><strong><span style=\"text-decoration: underline;\">Modern Compiler Construction in Python<\/span><\/strong><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites: <\/strong>CS111 and CS320 (or something equivalent to CS320)<\/span><\/p>\n<p>Modern Compiler Construction in Python is a course that introduces students to some basics in the design and implementation of compilers. In this course, we teach the theory behind various components of a compiler as well as the programming techniques involved to put the theory into practice. In particular, we adopt a style of modern compiler construction that builds a compiler by stringing a sequence of translations sharing a common closure-based interpreter-like structures.\u00a0 The chosen programming language for implementation is Python 3. However, you can seek the instructor&#8217;s approval to choose a functional programming language as your implementation language if you so wish.<\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Prof. Hongwei Xi<br \/>\n<\/span><\/p>\n<hr \/>\n<p class=\"p1\"><strong><span class=\"s1\"><b><span style=\"text-decoration: underline;\">CS501 E1 <em>or<\/em> E2: Topics in Computer Science: Mobile Application Development<\/span><\/b><\/span><\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"s3\">Prerequisites:<\/span><\/strong><span class=\"s2\"> No previous mobile application development experience is required, but a strong understanding of object-oriented programming<\/span><\/p>\n<p class=\"p1\"><span class=\"s2\">Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Kotlin, JetPack, and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small teams of 2-3, collaborating on a larger final project. Topics will include UI development, navigation, using third party APIs, data persistence, and gestures. <em>Note: Students should register for <strong><span class=\"s1\"><b><span style=\"text-decoration: underline;\">either<\/span><\/b><\/span><\/strong>\u00a0the E1 or E2 section other, but not both<\/em><\/span><\/p>\n<p class=\"p1\"><strong><span class=\"s3\">Instructor:<\/span><\/strong><span class=\"s2\"> Ron\u00a0Czik<\/span><\/p>\n<hr \/>\n<p><span><b><span style=\"text-decoration: underline;\">CS598 G1 Introduction to Information Security (must also enroll in G2 or G3 discussion section<\/span><\/b><\/span><\/p>\n<p><span><strong>Prerequisites:<\/strong> For graduate students the prerequisite is CS 611 or programming maturity. For undergraduates, the prerequisite is CS210.<\/span><\/p>\n<p><span>Provides basic concepts needed for understanding information security. Discusses vulnerabilities, design principles, basic algorithms, security definitions, and analytical methods. Covers web security, cryptography, networking, network security and data privacy. Also addresses social, ethical, and policy aspects of security.<\/span><\/p>\n<p><span><strong>Instructor:<\/strong> Sharon Goldberg<\/span><\/p>\n<hr \/>\n<p><strong><u>CS 599 A1:\u00a0Programming Language Foundations for Concurrency\u00a0<\/u><\/strong><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> CS 210 and CS 320<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Software systems around us are getting more and more complex by the day with multi-processor systems, microservices, and distributed programming. At the center of all this complexity lies concurrency, i.e., processes can execute in arbitrary orders and failures (e.g., network faults, node crashes, etc.) are pervasive. Building software systems is no longer straightforward (probably never was) and the issues introduced by concurrency cannot be ignored. This course will study the foundations of where these challenges arise from and will equip students with tools to handle these challenges.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The ultimate goal is for students to build robust concurrent software systems using state-of-the-art PL tools and techniques. T<span>his course satisfies both the MS and PhD Software breadth requirement.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Instructor:<\/strong> Prof. Ankush Das<\/span><\/p>\n<p><strong>Course Website: <\/strong><a href=\"https:\/\/ankushdas.github.io\/CS599.html\"><span style=\"font-weight: 400;\">https:\/\/ankushdas.github.io\/CS599.html<\/span><\/a><\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>CS599 D1: Artificial General Intelligence<\/strong><\/span><\/p>\n<p><strong>Prerequisites: <\/strong><span style=\"font-weight: 400;\">Any one of the following classes or an equivalent courses<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">GRS CS 640 Artificial Intelligence<\/span><\/li>\n<li><span style=\"font-size: 16px;\">CAS CS 542 Machine Learning<\/span><\/li>\n<li><span style=\"font-size: 16px;\">CAS CS 585 Image and Video Computing<\/span><\/li>\n<li><span style=\"font-size: 16px;\">CAS CS 505 Introduction to Natural Language Processing<\/span><\/li>\n<li><span style=\"font-size: 16px;\">CAS CS 523: Deep Learning<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The Artificial General Intelligence course provides the mathematical foundations and definitions of robust, responsible, and safe AGI systems. The class addresses reasoning, decision-making, consciousness, and intelligence. It covers foundation models, attention mechanisms, optimization, pre-training, fine-tuning, and inference, integration of language, vision, and action, self-supervised methods for alignment and reasoning by reinforcement learning and chain-of-thought training. Topics include video analysis and synthesis, autonomous agents and world models, self and social models, multi-agent systems, collective intelligence, self-improvement, genetic and evolutionary methods, continuous learning, and open exploration. The course emphasizes robustness, safety, and control by examining misuse, risks, and mitigation strategies. It concludes with discussions on applications of AGI and their societal impact in the fields of climate science, education, quantum computing, finance, and robotics. The class covers recent work published in Nature, Science, PNAS, ICLR, NeurIPS, ICML, and AAAI, and commercial AI systems, and is based on the instructor&#8217;s new book in progress titled Artificial General Intelligence: Mathematical Foundations with Cambridge University Press.<\/span><\/p>\n<p><strong>Professor:<\/strong> <span style=\"font-weight: 400;\">Prof. Iddo Drori<\/span><\/p>\n<hr \/>\n<p><span><strong>CS599 N1:<\/strong> Robot Brains! Designing Computing Systems for Robotics<\/span><\/p>\n<p><strong>Prerequisites: <\/strong><span>Recommended for undergraduates in their junior or senior year, and graduate students. Undergraduates must have taken CS210 or equivalent.<\/span><\/p>\n<p><span>Robots that can safely interact with people can help us in our everyday lives, with applications such as elder care and assistive technologies. Achieving this will require addressing critical challenges including real-time performance; limited power and energy budgets; and strict safety, security, and reliability guarantees. Good news: designing computing hardware and software systems for robotics is a promising solution to this \u201cmoonshot\u201d technological goal! <\/span><span>In this research seminar class, we will survey current work in the emerging subfield of computing systems for robotics. Students will read academic research papers, lead and participate in class discussions, complete short written response assignments, and collaborate in small groups on a final project. Students from all backgrounds and disciplines are welcome and encouraged\u2013 diverse viewpoints and ideas are essential to the success of this fundamentally interdisciplinary new subfield.<\/span><\/p>\n<p><span><strong>Instructor:<\/strong> Sabrina Neuman<\/span><\/p>\n<hr \/>\n<p><strong><span style=\"text-decoration: underline;\">CS599 <\/span><span style=\"text-decoration: underline;\">P1:<\/span> <u>Multimodal Machine Learning <\/u><u>\u00a0(must also enroll in P2-P3 discussion section)<\/u><\/strong><\/p>\n<p><strong>Prerequisites: <span style=\"font-weight: 400;\">CS542 (Machine Learning) or equivalent<\/span><\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Many applications of artificial intelligence rely on reasoning about data from many different sources (e.g., images, video, language, sound, infrared, Lidar, etc).\u00a0 This course serves as an introduction to methods that aim at using the fusion of these data sources to accomplish downstream tasks.\u00a0 For example, automatically captioning an image requires reasoning about visual and text data, a robot searching for a person lost in a cave may rely on infrared and sound, and autonomous vehicles may use Lidar and video information.\u00a0 This class will explore machine learning and statistical techniques that aim to understand the relationship between modalities.\u00a0 Students will also learn about some of the common issues that arise when dealing with multiple modalities such as data scarcity,\u00a0 positive-unlabeled learning, structured prediction, and the challenges in evaluating these systems.<\/span><\/p>\n<p><strong>Professor:<\/strong> <span style=\"font-weight: 400;\">Bryan Plummer<\/span><\/p>\n<p><strong>Course site: <\/strong>See link on https:\/\/www.bryanplummer.com\/<\/p>\n<hr \/>\n<p><strong><span style=\"text-decoration: underline;\">CS599 R1: <\/span><span style=\"text-decoration: underline;\">Sublinear Algorithms<\/span><\/strong><\/p>\n<p><strong>Prerequisites: <a href=\"https:\/\/cs-people.bu.edu\/sofya\/cs537\/\"><span style=\"font-weight: 400;\">CS 537<\/span><\/a><\/strong> and <strong><span style=\"font-weight: 400;\">proficiency in understanding and writing mathematical proofs<\/span><\/strong><\/p>\n<p><span style=\"font-weight: 400;\">This course will cover the design and analysis of algorithms that are restricted to run in sublinear time. Such algorithms are typically randomized and produce only approximate answers. A characteristic feature of sublinear algorithms is that they do not have time to access the entire input. Therefore, input representation and the model for accessing the input play an important role. We will study different models appropriate for sublinear algorithms. The course will cover sublinear algorithms discovered in a variety of areas, including graph theory, algebra, geometry, and discrete mathematics, and introduce many techniques that are applied to analyzing sublinear algorithms.<\/span><\/p>\n<p><strong>Professor:<\/strong> <span style=\"font-weight: 400;\">Sofya Raskhodnikova <\/span><\/p>\n<p><strong>Course site: <\/strong>https:\/\/cs-people.bu.edu\/sofya\/sublinear-course\/<\/p>\n<hr \/>\n<p><strong><span style=\"text-decoration: underline;\">CS599 S1:<\/span><\/strong><span style=\"text-decoration: underline;\"> <\/span><strong><span style=\"text-decoration: underline;\">Private Data Analysis, Learning, and Inference<\/span><\/strong><\/p>\n<p><strong>Prerequisites: <\/strong>Probability (<strong><a href=\"https:\/\/cs-people.bu.edu\/sofya\/cs537\/\"><span style=\"font-weight: 400;\">CS 537 <\/span><\/a><span style=\"font-weight: 400;\">or equivalent)<\/span><\/strong><\/p>\n<p><span style=\"font-weight: 400;\">How can we learn from a data set of sensitive information while providing meaningful privacy to the individuals whose information it contains? The course explores this question, starting from the problems faced by straightforward solutions and moving on to rigorous state-of-the-art solutions using differential privacy. The class will focus on foundations, but also delve into some applied work and on some of the social, ethical, and legal context for the subject. The coursework involves mathematical and programming assignments, as well as a final course project.<\/span><\/p>\n<p><strong>Professor:<\/strong> <span style=\"font-weight: 400;\">Adam Smith <\/span><\/p>\n<p><strong>Course site: <\/strong>https:\/\/dpcourse.github.io\/<\/p>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Fall 2024 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><\/p>\n<p><b><span style=\"text-decoration: underline;\">CS391 A1 \u2013 Web Application Development<\/span><\/b><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> <span>CS 111, CS 112, and CS 210<\/span><\/span><\/p>\n<p>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 explore industry-standard tools like Next.js for efficient API handling and Vercel for deployment. MongoDB ensures secure data storage. Advanced topics include React Native with GraphQL\/Apollo for mobile app development and React-VR with Three.js for immersive web experiences. Graduates master full-stack development and deployment.<\/p>\n<p><b>Professor:<\/b> Taymaz Davoodi<\/p>\n<p><b><span style=\"text-decoration: underline;\">CS599 D1 \u2013 Artificial General Intelligence<\/span><\/b><\/p>\n<div class=\"page\" title=\"Page 1\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><strong>Prerequisites: <\/strong><span>Any one of the following courses at Boston University or an equivalent (<\/span><span>Principles of Machine Learning CS 542, <\/span><span>Artificial Intelligence CS 640, Deep Learning CS 523. Image and Video Computing CS 585, <\/span><span>Introduction to Natural Language Processing CS 505)<\/span><\/p>\n<p><span>The Artificial General Intelligence course includes three parts: (1) Decision Making and Con- sciousness, (2) Human Intelligence, and (3) Artificial General Intelligence. The first part covers the elements required for a conscious neural network. Consciousness does not mean intelligence, does not require biology, and only requires combining existing machine learning and AI capabili- ties of: (1) self-report, (2) conversational ability available in language models, (3) domain-general abilities available in a generalist agent, (4) sensory processing available in vision-language trans- formers, (5) the ability to act available in vision-language-action transformers, (6) world models, (7) self models, (8) recurrent processing available in sequence models, (9) a global workspace, and (10) a unified agency. The second part of the class covers human intelligence from a neuroscience perspective, including synaptic transmission, perception, movement, emotion, and motivation. We then describe human development and emergent behavior, followed by the neural mech- anisms of learning, memory, language, and cognition. The third part presents a path toward artificial general intelligence including foundation models including mixture of experts and state space models, multi-agent systems, latent space processing, and their mathematical foundations, quality-diversity, open ended exploration, self-improvement, social models, and safety. Topics covered include pre-training, fine-tuning, and inference of an open source foundation model and agents, AI diversity and open ended exploration, and meta, multi-task, few-shot, continual, and lifelong learning. The class covers recent work published in Nature, Science, PNAS, ICLR, NeurIPS, ICML, and AAAI, and is based on notes for a book in progress titled Artificial General Intelligence: Mathematical Foundations by Iddo Drori, with Cambridge University Press. <\/span><\/p>\n<p><strong>Professor:<\/strong> Iddo Drori<\/p>\n<div>\n<p><strong>CS 599 A1: Rounding Techniques in Approximation Algorithms<\/strong><\/p>\n<p><b>Prerequisites:<\/b><span>\u00a0Strong undergraduate-level knowledge of algorithms, linear algebra, and probability. Some familiarity with linear programming and at least one of CS 530, 531, or 537 is recommended but not required. Motivated, mathematically mature undergraduate students who have excelled in CS 237 and CS 330 are also welcome.\u00a0<\/span><\/p>\n<p><b>Description:\u00a0<\/b>We will survey a simple but powerful framework for designing approximation algorithms known as &#8220;Relax and Round.&#8221; Given a (possibly NP-Hard) discrete optimization problem, this framework first relaxes it into a polynomial time solvable one over a continuous domain. It then solves this easier problem, whose solution can have fractional coordinates: for example, it could assign a variable to be half true and half false in a SAT formula.<\/p>\n<\/div>\n<div>\n<p>In the final step, we round this fractional solution to an integer one. Our goal will be to find a rounding procedure that, like a good translator,\u00a0finds an integer solution that approximately preserves the key properties of the fractional one\u00a0such as cost. There are many beautiful methods known for performing this rounding step, which will be our main focus. We will discuss many of them, such as the use of integral polytopes, iterative rounding, iterative relaxation, and independent and dependent randomized rounding. The course will emphasize\u00a0graph problems\u00a0as well as results from the past decade with exciting open directions.<\/p>\n<div>\n<p><b>Course Website:\u00a0<\/b><a href=\"https:\/\/nathan-klein.github.io\/rounding\" target=\"_blank\" title=\"https:\/\/nathan-klein.github.io\/rounding\" rel=\"noopener noreferrer\">https:\/\/nathan-klein.github.io\/rounding<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Spring 2024 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><\/p>\n<p><b><span style=\"text-decoration: underline;\">CS391 A1 \u2013 Web Application Development<\/span><\/b><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> <\/span><span style=\"font-weight: 400;\">CAS CS 210; or consent of instructor<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Web Application Development is a comprehensive course that equips students with practical skills to build dynamic and immersive web applications. Through hands-on exercises and projects, students learn to structure and style web pages using HTML and CSS, create interactive experiences with JavaScript, develop reusable components with React, interact with relational databases using decoupling tools such as ORM and DAO. Additionally, students explore the exciting world of Web-XR, enabling them to build virtual reality experiences with React-VR. By the end of the course, students have the necessary tools and knowledge to develop robust web applications with seamless integration of databases, interactive functionality, and immersive VR experiences. Students are expected to have basic knowledge of OOP principles, coding conventions, and I\/O subsystems.\u00a0<\/span><\/p>\n<p><b>Professor:<\/b> Taymaz Davoodi<\/p>\n<p><span style=\"text-decoration: underline;\"><b>CS392 C1 &#8211; Algorithms for Competitive Programming<\/b><\/span><\/p>\n<p><em><strong>**Previously posted as CS392 B1**<\/strong><\/em><\/p>\n<p><strong>Prerequisites:<\/strong> CS112 and CS131. <em>Strong performance in CS 112 and CS 131 is expected. An assessment test might be administered in the first week to provide feedback on readiness to take this class.<\/em><\/p>\n<p>This course covers essential algorithms necessary to compete in the ACM International Collegiate Programming Contest (ICPC) and similar contests. Active involvement in weekly contests is a mandatory component of the course. Topics covered include standard library classes and data structures, competitive programming contest strategies, string manipulation, divide and conquer, dynamic programming, graph algorithms, number theory, computational geometry, and combinatorics.<\/p>\n<p><b>Professor:<\/b> Tiago Januario<\/p>\n<p><span style=\"text-decoration: underline;\"><b>CS392 E1 \u2013 <\/b><b>Intermediate Application Development in C#<\/b><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> CAS CS 112 and CS210; or consent of instructor<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Students will utilize agile software engineering practices in this hands-on course to design and implement data driven applications using C# and the .NET Framework.\u00a0 We will start by comparing and contrasting the .NET framework with other frameworks as well as native code, exploring the advantages and drawbacks of running code in managed vs. unmanaged environments.\u00a0 Students will subsequently design and implement several simple C# programs, focusing on data driven UI components and event based programming, after which students will be grouped into small teams, collaborating on a larger final project.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As the course proceeds students will begin looking at more complex topics including fundamental design patterns, while implementing more complex applications.\u00a0 Topics will include: reading and writing from files\/streams\/databases, exception handling, multithreading, memory management, networking, delegates, generics and LINQ.\u00a0 Students will also perform their own research and development as they choose which 3<\/span><span style=\"font-weight: 400;\">rd<\/span><span style=\"font-weight: 400;\"> party APIs to incorporate into their final project.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">No previous application development experience is required, but a strong understanding of object-oriented programming is required.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The syntax for C#, Java, and C++ are nearly identical.\u00a0 Students will be expected to leverage their understanding of Java and\/or C++ syntax to help pivot to C#.\u00a0\u00a0<\/span><\/p>\n<p><em><b>This will be a highly interactive, project oriented and team based course. Attendance, participation and collaboration are mandatory and part of your grade.\u00a0<\/b><\/em><\/p>\n<p><b>Professor:<\/b> Shereif El-Sheikh<\/p>\n<p><span style=\"text-decoration: underline;\"><b>CS391 S1\/S2 &#8211; Spark! Software Engineering Immersion<\/b><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Students will be introduced to all concepts required to work on a modern web development project. This course is intentionally taught with very little prerequisite knowledge to enable students to begin learning these skills earlier in their college path. Students begin by learning basic skills required to build a functioning web application. During the second half of the course, students will be allocated to teams and assigned a project to work on over the course of the semester. Students will submit their final application as their final project on the last day of classes.<\/span><span style=\"font-weight: 400;\"><\/span><\/p>\n<p><b>Professor:<\/b> James Kunstle, Langdon White<\/p>\n<p><span style=\"text-decoration: underline;\"><b>CS400 A1\u00a0 &#8211; Type Theory and Mechanized Reasoning<\/b><\/span><\/p>\n<p><strong><em>**Previously posted as CS491 A1**<\/em><\/strong><\/p>\n<p><strong>Prerequisites:<\/strong> CS131, CS330, CS320 (CS 332 recommended but not required)<\/p>\n<p>Introduction to basic concepts in type theory as it relates to programming languages, mathematics, philosophy, and linguistics. Possible topics include constructive logic, the lambda calculus, simple type theory, polymorphism, type inference, normalization, evaluation, substitution, functional programming, the Curry-Howard isomorphism, dependent type theory, type universes, mechanized mathematics and proof assistants, Kripke semantics and category theoretic semantics, Girard&#8217;s paradox.<\/p>\n<p><strong>Professor:<\/strong> Nathan Mull<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS595 T1\/T2 <\/strong><strong>Blockchains and their Applications<\/strong><\/span><\/p>\n<p><em><strong>**Previously posted as CS599 T1\/T2**<\/strong><\/em><\/p>\n<p><strong>Prerequisites: <\/strong>One of the following:<br \/>\nA. Students with substantial Computer Science background: graduate or advanced undergraduate students in Computer Science or Computing &amp; Data Sciences<br \/>\nPrerequisites: CAS CS 330 or CDS DS 320 or equivalent, CAS CS 237 or CDS DS 122 or equivalent<br \/>\nB. Business School graduate students (MBA, masters, or PhD) who have also taken at least one course that included substantial hands-on programming in a general-purpose programming language such as Python, Java, C, or JavaScript.<br \/>\nLaw School students with a suitable background are also welcome. Exceptions, such as equivalent industry or informal experience, will be considered.<\/p>\n<p>Blockchain technology amalgamates technical tools, economic mechanisms, and system design patterns. It facilitates the construction of information systems with novel combinations of robustness, decentralization, privacy, cost, and flexibility. Beyond their initial use in cryptocurrencies such as Bitcoin, blockchains have become a promising and powerful technology in business, financial services, law, and other areas.<\/p>\n<p>This course covers blockchain technology in a comprehensive, systematic, and interdisciplinary way. It surveys major approaches, variants, and applications of blockchains in these areas. Beyond a solid grasp of the principles, the course aims to build familiarity with practice through numerous case studies and hands-on projects.<\/p>\n<p>To facilitate its interdisciplinary perspective, this course will be open to two categories of students: students with Computer Science background (graduate or advanced undergraduate), and graduate students with a substantial Business or Law background and a working knowledge of computer programming.<\/p>\n<p>Projects will be done in heterogeneous teams combining these categories, and will center on devising and analyzing sample applications of blockchain technology, including both prototype implementations and analysis of its business\/legal implications.<\/p>\n<p>Topics covered: disentangling &#8220;blockchain\u201d; cryptographic prerequisites; assets and their representations; on-chain programming; state consensus; deployments; decentralized applications (Dapps\/Web3); protocol governance; protocol revenue and business models; market structure; privacy and authorization; regulation.<\/p>\n<p><a href=\"https:\/\/cs-people.bu.edu\/tromer\/blockchain24s\">More information can be found at this link.<\/a><\/p>\n<p><em>Notes for Questrom students<\/em><\/p>\n<p><em>1. While this course is explicitly designed to accommodate Questrom students, its formal listing this year is as a Computer Science. Thus, to count as an elective towards Questrom graduate degree requirements, you need to submit aGraduate Elective Request.<\/em><br \/>\n<em>2. This is a 4 credit course, unlike Questrom&#8217;s usual 3 credits. To avoid extra tuition cost, full-time MBA students can have their tuition cap adjusted by their academic advisor. Professional Evening MBA may contact the instructor for alternative solutions.<\/em><\/p>\n<p><strong>Professor:<\/strong> Eran Tromer<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS599 D1 Programming Language Foundations for Concurrency<\/strong><\/span><\/p>\n<p><strong>Prerequisites:<\/strong> CAS CS 320 (Concepts of Programming Languages) or equivalent; CAS CS 210 (Computer Systems) or equivalent; or consent of instructor.This course is aimed at viewing concurrent and distributed software systems from a programmer&#8217;s perspective.<\/p>\n<p>We will begin with mathematically defining a programming language using its syntax, type system, and semantics. The course will then cover programming abstractions that are usually used for concurrency, i.e., shared-memory and message-passing. While discussing these abstractions, the course will introduce a variety of type systems and languages that would help us write safe concurrent programs. While discussing these type systems, the course will introduce the unique challenges that concurrency poses to type systems and how they can be addressed. The course will also dive into the deep rooted logical foundations for these type systems via Curry-Howard isomorphism. In this course, students would learn about substructural logics, session types and advanced concepts such as refinement and probabilistic types.<\/p>\n<p>The course would involve a combination of theoretical assignments, fun programming exercises, and paper reading where students would build their own prototypical languages, both in theory and implementation.<\/p>\n<p><a href=\"https:\/\/ankushdas.github.io\/CS599.html\">More information can be found on the course webpage, linked here.<\/a><\/p>\n<p><strong>Professor:<\/strong> Ankush Das<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS 599 G1 Formal Methods in Security and Privacy<\/strong><\/span><\/p>\n<p><strong>Prerequisites:<\/strong> The course has a significant component based on analysis of algorithms, and formal techniques. So, the following are required classes: CAS CS 237 or equivalent; CAS CS 320 or equivalent; CAS CS 330 or equivalent; or consent of instructor. Additionally, some rudimentary understanding of probability and statistics is expected.<\/p>\n<p>Security and privacy breaches are constantly on the news. Often these breaches are due to vulnerabilities in the design and implementations of software components. In this class we will study some of the formal tools that have been developed to formally support the correctness of software with respect to security and privacy requirements. We will focus on a few security and privacy properties such as: information flow control and non-interference, provable security, and differential privacy.<span>\u00a0<\/span><\/p>\n<p>The course consists of a series of lectures on different formalisms that have been developed to reason about security and privacy properties. The basic formalism we will use is the one provided by relational program logics. We will first study a deterministic logic which is useful for reasoning about information flows and non-interference. Then, we will study a probabilistic extension of this logic which supports reasoning about cryptographic security and differential privacy. We will see how different natural proofs from cryptography and differential privacy can be expressed using this formalism. We will also experiment practically with these topics on different examples by using the EasyCrypt tool.<\/p>\n<p><strong>Professor:<\/strong> Marco Gaboardi and Alley Stoughton<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS599 L1 <\/strong><strong>Fine Grained Complexity: An Introduction<\/strong><\/span><\/p>\n<p><strong>Prerequisites:<\/strong> Mathematical maturity, a familiarity\u00a0with reductions and a familiarity with reductions (e.g. NP hardness reductions) will be expected for this class.<\/p>\n<p>In this course we will introduce fine-grained complexity. Fine-grained complexity studies the constants in the exponents of algorithms. We will give techniques for achieving\u00a0conditional lower bounds on problems like: diameter, sparse all-pairs shortest paths, longest common subsequence, and more. This class will also cover techniques for worst-case to average case reductions in fine-grained complexity. Mathematical maturity, a familiarity\u00a0with reductions and a familiarity with reductions (e.g. NP hardness reductions) will be expected for this class.<\/p>\n<p><strong>Professor:<\/strong> Andrea Lincoln<\/p>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Fall 2023 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><\/p>\n<p><b><span style=\"text-decoration: underline;\">\u200b\u200bCS392 D1 \u2013 Web Application Development<\/span><\/b><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> <\/span><span style=\"font-weight: 400;\">CAS CS 210; or consent of instructor<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Web Application Development is a comprehensive course that equips students with practical skills to build dynamic and immersive web applications. Through hands-on exercises and projects, students learn to structure and style web pages using HTML and CSS, create interactive experiences with JavaScript, develop reusable components with React, interact with relational databases using decoupling tools such as ORM and DAO. Additionally, students explore the exciting world of Web-XR, enabling them to build virtual reality experiences with React-VR. By the end of the course, students have the necessary tools and knowledge to develop robust web applications with seamless integration of databases, interactive functionality, and immersive VR experiences. Students are expected to have basic knowledge of OOP principles, coding conventions, and I\/O subsystems.\u00a0<\/span><\/p>\n<p><b>Professor:<\/b> Taymaz Davoodi<\/p>\n<p><span style=\"text-decoration: underline;\"><b>CS392 E1 \u2013 <\/b><b>Intermediate Application Development in C#<\/b><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Prerequisites:<\/strong> CAS CS 112; or consent of instructor<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Students will utilize agile software engineering practices in this hands-on course to design and implement data driven applications using C# and the .NET Framework.\u00a0 We will start by comparing and contrasting the .NET framework with other frameworks as well as native code, exploring the advantages and drawbacks of running code in managed vs. unmanaged environments.\u00a0 Students will subsequently design and implement several simple C# programs, focusing on data driven UI components and event based programming, after which students will be grouped into small teams, collaborating on a larger final project.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As the course proceeds students will begin looking at more complex topics including fundamental design patterns, while implementing more complex applications.\u00a0 Topics will include: reading and writing from files\/streams\/databases, exception handling, multithreading, memory management, networking, delegates, generics and LINQ.\u00a0 Students will also perform their own research and development as they choose which 3<\/span><span style=\"font-weight: 400;\">rd<\/span><span style=\"font-weight: 400;\"> party APIs to incorporate into their final project.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">No previous application development experience is required, but a strong understanding of object-oriented programming is required.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The syntax for C#, Java, and C++ are nearly identical.\u00a0 Students will be expected to leverage their understanding of Java and\/or C++ syntax to help pivot to C#.\u00a0\u00a0<\/span><\/p>\n<p><em><b>This will be a highly interactive, project oriented and team based course. Attendance, participation and collaboration are mandatory and part of your grade.\u00a0<\/b><\/em><\/p>\n<p><b>Professor:<\/b> Shereif El-Sheikh<\/p>\n<p><span style=\"text-decoration: underline;\"><b>CS392 S1 &#8211; Spark! Software Engineering Immersion<\/b><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Students will be introduced to all concepts required to work on a modern web development project. This course is intentionally taught with very little prerequisite knowledge to enable students to begin learning these skills earlier in their college path. Students begin by learning basic skills required to build a functioning web application. During the second half of the course, students will be allocated to teams and provided a choice of projects to develop over the course of the semester. Students will submit their final application as their final project on the last day of classes.<\/span><span style=\"font-weight: 400;\"><\/span><\/p>\n<p><b>Professor:<\/b> James Kunstle<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS599 C1 &#8211; The Meta-Complexity Frontier<\/strong><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Complexity theory studies the cost of solving computational problems using various resources such as time, space, and logic gates.\u00a0 Even after decades of effort, there is a huge gap between what we conjecture about the limits of efficient computation and what we can actually prove.\u00a0 For example, it appears that deciding if a string is &#8220;compressible&#8221; (MCSP) requires brute-force search, but we cannot (yet) prove this.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This class covers classical and recent &#8220;barrier&#8221; theorems that explain why it is so difficult to prove lower bounds for computational resource costs.\u00a0 Then, we study emerging connections between meta-mathematics of complexity (provability of theorems) and meta-computational problems like MCSP (existence of algorithms). These modern results offer tantalizing &#8220;magnification conditions&#8221; &#8212; seemingly weak conjectures that, if proven, would immediately imply breakthroughs in complexity theory.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We will explore the inherent tension: either complexity breakthroughs are much closer than they appear or even &#8220;weak&#8221; lower bounds are inherently difficult to prove.\u00a0 This will prepare students to articulate and work at the research frontier in (meta-)complexity.<\/span><\/p>\n<p><strong>Professor:<\/strong><span style=\"font-weight: 400;\"> Marco Carmosino<\/span><\/p>\n<p><span style=\"text-decoration: underline;\"><b>CS599 D1 &#8211; Artificial General Intelligence<\/b><\/span><\/p>\n<p>The Artificial General Intelligence course includes three parts: (1) Decision Making and Consciousness, (2) Human Intelligence, and (3) Artificial General Intelligence. The first part covers the elements required for a conscious neural network. Consciousness does not mean intelligence, does not require biology, and only requires combining existing machine learning and AI capabilities covered in the first part of the class: (1) self-report, (2) conversational ability available in language models, (3) domain-general abilities available in a generalist agent, (4) sensory processing available in vision-language transformers, (5) the ability to act available in vision-language-action transformers, (6) world models, (7) self models, (8) recurrent processing available in sequence models, (9) a global workspace, and (10) a unified agency.<\/p>\n<p>The second part of the class covers human intelligence from a neuroscience perspective, including synaptic transmission, perception, movement, emotion, and motivation. We then describe human development and emergent behavior, followed by the neural mechanisms of learning, memory, language, and cognition.<\/p>\n<p>The third part presents a path toward artificial general intelligence including quality-diversity, open ended exploration, self-improvement and social models. Topics covered include pre-training, fine-tuning, and inference of an open source GPT-4, quality-diversity and open ended exploration, and meta, multi-task, few-shot, continual, and lifelong learning.<\/p>\n<p><strong>Professor:<\/strong> Iddo Drori<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>CS599 N1 \u2013 Robot Brains! Designing Computing Systems for Robotics<\/strong><\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><b>Prerequisites<\/b><span style=\"font-weight: 400;\">: Recommended for undergraduates in their third or fourth year, and graduate students. Undergraduates in their first or second year may join with permission of the instructor.<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Robots that can safely interact with people can help us in our everyday lives, with applications such as elder care and assistive technologies. Achieving this will require addressing critical challenges including real-time performance; limited power and energy budgets; and strict safety, security, and reliability guarantees. Good news: designing computing systems for robotics is a promising solution to this \u201cmoonshot\u201d technological goal!<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">In this research seminar class, we will survey current work in the emerging subfield of computing systems for robotics. Students will read academic research papers, lead and participate in class discussions, complete short written response assignments, and collaborate in small groups on a final project. Depending on scope, it is possible that these projects might lead to future academic publications. Students from all backgrounds and disciplines are welcome and encouraged\u2013 diverse viewpoints and ideas are essential to the success of this fundamentally interdisciplinary new subfield.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Professor:<\/strong> Sabrina Neuman<\/span><\/p>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Spring 2023 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><\/p>\n<h3 style=\"text-align: justify;\">CS Practicum<\/h3>\n<p style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>CS 501 E1 &amp; E2 Mobile App Development<\/strong><\/span><\/p>\n<p><strong>Course Description:<\/strong><span>\u00a0<\/span>Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Java and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small groups, collaborating on a larger final project. Topics will include UI development, action bars, multi-touch, gestures, database and file I\/O. Students will also learn to make rich applications by consuming location and sensor information from device hardware.<\/p>\n<p><strong>Prerequisites:<\/strong><span>\u00a0<\/span>No previous mobile application development experience is required, but a strong understanding of object-oriented programming and database development (from CS 112 and CS 460 or equivalent) is necessary.<\/p>\n<p><strong>Instructor:<span> <\/span><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/ronald-czik\/\"><span>Ron Czik<\/span><\/a><\/strong><\/p>\n<h3 style=\"text-align: justify;\">CS Topics<\/h3>\n<p style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>CS 599 S1 Privacy in Statistics and Machine Learning<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><span><strong>Course Description: <\/strong><\/span>How can we learn from a data set of sensitive information while providing meaningful privacy to the individuals whose information it contains? The course explores this question, starting from the problems faced by straightforward solutions and moving on to rigorous state-of-the-art solutions. The class will focus on foundations, but also delve into some applied work and on some of the social, ethical, and legal context for the subject. Students will be required to complete some mathematical assignments, some programming assignments, and a final course project.<\/p>\n<div>\n<p><strong>Course Topics:<\/strong> The exact set of topics will evolve as the course proceeds, but a representative list includes:<\/p>\n<ul>\n<li>Attacks on statistical data privacy<\/li>\n<li>What does \u201cprivacy\u201d mean in learning and statistics?<\/li>\n<li>Defining privacy: differential privacy and its variants<\/li>\n<li>Achieving privacy: algorithmic tools for differential privacy<\/li>\n<li>Legal and ethical frameworks relating to privacy<\/li>\n<li>Connections to other areas of computer science and statistics<\/li>\n<\/ul>\n<\/div>\n<p><strong>Prerequisites: <\/strong>Students should have a solid grounding in probability (e.g. CS 237\/537), linear algebra (e.g. CS 132), multivariate calculus (e.g. MA 225), and algorithms (CS 330). Students should be comfortable reading and writing mathematical proofs involving algorithms and probability. It is strongly recommended that students have taken an additional course in statistics or machine learning beyond CS 237. Programming assignments will be in Python.<\/p>\n<p style=\"text-align: justify;\"><strong>Instructor: <a href=\"https:\/\/www.bu.edu\/cs\/profiles\/adam-smith\/\">Adam Smith<\/a><\/strong><\/p>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Fall 2022 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\"><\/p>\n<h4 style=\"text-align: justify;\">CS Practicum<\/h4>\n<p style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>CS 501 E1 &amp; E2 MOBILE APP DEVELOPMENT<\/strong><\/span><\/p>\n<p><strong>Course Description:<\/strong><span>\u00a0<\/span>Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Java and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small groups, collaborating on a larger final project. Topics will include UI development, action bars, multi-touch, gestures, database and file I\/O. Students will also learn to make rich applications by consuming location and sensor information from device hardware.<\/p>\n<p><strong>Prerequisites:<\/strong><span>\u00a0<\/span>No previous mobile application development experience is required, but a strong understanding of object-oriented programming and database development (from CS 112 and CS 460 or equivalent) is necessary.<\/p>\n<p><strong>Instructor:<\/strong> <a href=\"https:\/\/www.bu.edu\/cs\/profiles\/ronald-czik\/\">Ron Czik<\/a><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/sse\/\"><\/a><span style=\"font-size: 16px;\"><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>CS 599 L1 &#8211; User-Centric Systems for Data Science<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><span><strong>Course Description: <\/strong>Understanding the behavior of data systems is hard. Questions like \u201cWhy does the system return certain results?\u201d and \u201cWhy is the execution slow?\u201d arise too often in large-scale data analysis. Answering such questions is still a cumbersome task that requires considerable amount of resources as well as manual work by experts. The course focuses on algorithmic techniques and design principles that help users get meaningful insights into the functionality of data processing systems. In the first part of the course, we will discuss methods for explaining system outputs, including approaches from databases, recommendation engines, and interpretable ML. In the second part, we will focus on techniques that help users understand system performance. We will discuss traditional and causal profiling, end-to-end tracing, root-cause analysis, and invariant checking techniques.<\/span><\/p>\n<p><strong>Prerequisites: <\/strong>Strong programming skills, and basic knowledge of data structures, algorithms and computer systems (CS 111, CS 112, CS 210, or equivalent experience).<\/p>\n<p style=\"text-align: justify;\"><strong>Instructor: <a href=\"https:\/\/www.bu.edu\/cs\/profiles\/liagos\/\">John Liagouris<\/a><\/strong><\/p>\n<p style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>CS 599 P1 &#8211; Applied Machine Learning<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><strong>Course Description: <\/strong>Covers practical skills in machine learning including techniques for clustering, classification, regression, feature selection, and model compression.\u00a0 \u00a0Emphasizes hands-on application of methods via programming on real-world datasets.<\/p>\n<p style=\"text-align: justify;\"><strong>Prerequisites: <\/strong><span>CAS CS 132 or MA 242 (or equivalent); CAS CS237 (or equivalent);\u00a0\u00a0CAS CS 111 (CS 112 recommended,\u00a0or equivalent experience); familiarity with calculus;\u00a0CAS CS 365 recommended.\u00a0<\/span><\/p>\n<p style=\"text-align: justify;\"><strong>Instructor:\u00a0<\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/bplum\/\">Bryan Plummer\u00a0<\/a><\/p>\n<p><\/div>\n<\/div>\n\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Spring 2021 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\">\n<h4 style=\"text-align: justify;\">Undergraduate Only<\/h4>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"true\" role=\"0\" tabindex=\"0\">CS 391 E1 FOUNDATIONS OF DATA SCIENCE<span>\u00a0<\/span><strong>*COUNTS TOWARD GROUP D REQUIREMENT FOR CS MAJOR*<\/strong><\/h4>\n<p><strong><span>Course Description: <\/span><\/strong>This course is intended as the first to take for students interested in the aspects of computer science related to data analysis and data management. It specifically serves as a preparation including, but not limited, to the courses CS460, CS506, CS542 and CS565. Course topics will cover data collection, cleaning and visualization. Data modeling and basics of data bases. Mathematical foundations of data science including linear algebra, (multivariate) calculus and convex optimization. Topics in data mining, such as similarity and distance functions, clustering, ranking, networks. Introduction to machine learning. Prediction methods, e.g. regression and common measures.<\/p>\n<div id=\"docs-chrome\" role=\"group\" class=\"docs-material companion-enabled\" tabindex=\"0\">\n<div id=\"docs-additional-bars\">\n<div id=\"waffle-editorsized-bar\">\n<div id=\"formula-bar\">\n<div id=\"t-formula-bar-input-container\">\n<div dir=\"ltr\">\n<div spellcheck=\"false\" aria-hidden=\"false\" id=\"t-formula-bar-input\">\n<div class=\"cell-input\" role=\"textbox\" contenteditable=\"true\" docs-unhandledkeys=\"\" dir=\"ltr\" tabindex=\"0\">\n<p><strong>Prerequisites:\u00a0<\/strong>CS 112, CS 131, CS 132, and CS 237 required; CS 330 recommended; or consent of instructor.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>Instructor:\u00a0<\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/edori\/\">Dora Erdos<\/a><\/p>\n<h4 style=\"text-align: justify;\">Undergraduate and Graduate<\/h4>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"false\" role=\"0\" tabindex=\"0\">CS 501 E1 &amp; E2 MOBILE APP DEVELOPMENT<\/h4>\n<p><strong>Course Description:<\/strong><span>\u00a0<\/span>Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Java and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small groups, collaborating on a larger final project. Topics will include UI development, action bars, multi-touch, gestures, database and file I\/O. Students will also learn to make rich applications by consuming location and sensor information from device hardware.<\/p>\n<p><strong>Prerequisites:<\/strong><span>\u00a0<\/span>No previous mobile application development experience is required, but a strong understanding of object-oriented programming and database development (from CS 112 and CS 460 or equivalent) is necessary.<\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/sse\/\">Shereif El-Sheikh<\/a><\/p>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"false\" role=\"0\" tabindex=\"0\">CS 501 T1 &amp; T2<span>\u00a0<\/span><span>SPARK! PRACTICUM<\/span><\/h4>\n<p>CS 501 T1: Spark! Software Engineering Practicum<\/p>\n<p>CS 501 T2: Spark! Machine Learning Practicum<\/p>\n<p><strong><span>Course Description:<\/span><\/strong><\/p>\n<p><span>The Spark! Practicum offers computer science students the opportunity to apply their computer science and engineering skills by working on real-world projects. The course offers a range of project options where students can improve their technical skills, while also gaining the \u201csoft skills\u2019 necessary to deliver projects aligned to the partner\u2019s goals. These include teamwork and communications skills and software development processes. All students participating in the course are expected to complete the project including a final presentation to the partner organization.<\/span><\/p>\n<p><strong>Prerequisites:\u00a0<\/strong><\/p>\n<p>CS 501 T1: CS 411 or equivalent, or instructor\u2019s consent<\/p>\n<p>CS 501 T2: CS 542 or equivalent, or instructor\u2019s consent<\/p>\n<p><strong>Instructor:\u00a0<\/strong><a href=\"http:\/\/www.bu.edu\/spark\/about\/spark-team\/\">Dharmesh Tarapore<\/a><\/p>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"false\" role=\"0\" tabindex=\"0\">CS 591 A1<span>\u00a0<\/span><span>RESEARCH OPERATING SYSTEMS PROCESS MANAGEMENT<\/span><\/h4>\n<p><strong><span>Course Description:\u00a0<\/span><\/strong>In this class we will be examining 3 approaches to operating systems principles and mechanisms associated with the construction and management of program execution. \u00a0Specifically we will consider approaches which advance the role of the OS beyond manager to optimizer: 1) the imposition and exploitation of a state vector representaiton in the context of a hybrid library OS, 2) interrupt level energy tracing an its exploitation for optimization, and 3) systemic integration of signal tracing mechanisms and the exploitation of suffix trees. \u00a0 You must have a solid technical understanding of X86-64 VMM implementation, \u00a0X86-64 systems assembly programming, device driver and interrupt handling, and an understanding of the Linux address space management subsystem. \u00a0In addition to these technical skills you should be familiar with the literature from SOSP, OSDI and ASPLOS dealing with library OS structure, deterministic execution, record and replay, and tracing. \u00a0Further you should have a working knowledge of the literature associated with ASC, EbbRT, and SUESS. \u00a0MSc and undergraduates require the approval of the instructor to register.<\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/jappavoo\/\">Jonathan Appavoo<\/a><\/p>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"false\" role=\"0\" tabindex=\"0\">CS 591 C1<span>\u00a0<\/span><span>GEOMETRY PROCESSING<\/span><\/h4>\n<p><strong><span>Course Description:<\/span><\/strong>The need for manipulating and analyzing geometric data, in the form of meshes, point clouds, and polygon soups is ubiquitous in many computing applications: graphics for films and gaming, computational fabrication and design, virtual and augmented reality, to name just a few. This has served as fertile ground for the application of ideas from the mathematical fields of differential geometry and topology. In this course, we will read and discuss research papers in this vein, and students will team up in pairs or triplets to complete a free-form final project that implements or extends some of these works. Topics that may be covered include: mesh parametrization, volumetric deformation, spectral processing, applied optimization, discrete notions of curvature, discrete exterior calculus and vector fields, and surface registration and correspondence. Suggestions from students will also be taken into consideration.<\/p>\n<p><strong>Prerequisites:<span>\u00a0<\/span><\/strong>Course participants should have a strong foundation in linear algebra and calculus (multivariable especially), and a good programming base in order to complete a suitable final project. The basic prerequisites are CS 112, CS 132 or MA 242, and MA 225. Additional background in differential geometry or topology could be quite helpful, but is not necessary, as projects may be tailored towards students\u2019 level of knowledge.<\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/edchien\/\">Ed Chien<\/a><\/p>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"true\" role=\"0\" tabindex=\"0\">CS 591 G1 FORMAL METHODS FOR SECURITY AND PRIVACY<\/h4>\n<p><strong>Course Description:<span>\u00a0<\/span><\/strong>Security and privacy breaches are constantly on the news. Often these breaches are due to vulnerabilities in the design and implementations of software components. In this class we will study some of the formal tools, such as type systems, formal verification techniques, and program analysis, that have been developed to formally support the correctness of software with respect to security and privacy requirements. We will focus on readings about techniques designed to formally support security and privacy properties such as: information flow control, differential privacy, provable security, oblivious data structures, and universal composability.<\/p>\n<p><strong>Prerequisites:<\/strong>CAS CS 237 or equivalent; CAS CS 320 or equivalent; CAS CS 330 or equivalent; or consent of instructor.<\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/gaboardi\/\">Marco Gaboardi<\/a><span>\u00a0<\/span>&amp;<span>\u00a0<\/span><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/alley-stoughton\/\">Alley Stoughton<\/a><\/p>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"false\" role=\"0\" tabindex=\"0\">CS 591 K1<span>\u00a0<\/span><span>DATA STREAM PROCESSING &amp; ANALYTICS<\/span><\/h4>\n<p><strong>Course Description:<\/strong><span>\u00a0<\/span><span>Modern data-driven applications require continuous, low-latency processing of large-scale, rapid data events such as videos, images, emails, chats, clicks, search queries, financial transactions, traffic records, sensor measurements, etc. Extracting knowledge from these data streams is particularly challenging due to their high speed and massive volume.<\/span><br \/>\n<span>Distributed stream processing has recently become highly popular across industry and academia due to its capabilities to both improve established data processing tasks and to facilitate novel applications with real-time requirements. In this course, we will study the design and architecture of modern distributed streaming systems as well as fundamental algorithms for analyzing data streams.<\/span><br \/>\n<span>Specifically, we will cover the following topics:<\/span><br \/>\n<span>\u2013 Distributed streaming systems design and architectures<\/span><br \/>\n<span>\u2013 Fault-tolerance and processing guarantees<\/span><br \/>\n<span>\u2013 State management<\/span><br \/>\n<span>\u2013 Windowing semantics and optimizations<\/span><br \/>\n<span>\u2013 Basic data stream mining algorithms (e.g. sampling, counting, filtering)<\/span><br \/>\n<span>\u2013 Query languages and libraries for stream processing (e.g. Complex Event Processing, online machine learning)<\/span><br \/>\n<span>\u2013 Streaming applications and use-cases<\/span><br \/>\n<span>\u2013 Modern streaming systems, such as Apache Flink, Kafka, and Beam<\/span><\/p>\n<p><strong>Prerequisites:<span>\u00a0<\/span><\/strong>To attend this course, students need to have a solid background on data management and database systems (CS 460\/660 or equivalent) and distributed systems (CS 451\/651 or equivalent). Programming skills and prior experience with Java and\/or Scala are also necessary.<\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/vasiliki-kalavri\/\">Vasiliki Kalavri<\/a><\/p>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"true\" role=\"0\" tabindex=\"0\">CS 591 P1<span>\u00a0<\/span><span>MULTIMODAL MACHINE LEARNING<\/span><\/h4>\n<p><strong>Course Description:<span>\u00a0<\/span><\/strong>Many applications of artificial intelligence rely on reasoning about data from many different sources (e.g., images, video, language, sound, infrared, Lidar, etc).\u00a0 This course serves as an introduction to methods that aim at using the fusion of these data sources to accomplish some downstream task.\u00a0 For example, automatically captioning an image requires reasoning about visual and text data, a robot searching for a person lost in a cave may rely on infrared and sound, and autonomous vehicles may use Lidar and video information.\u00a0 This class will explore machine learning and statistical techniques that aim to understand the relationship\u00a0between modalities.\u00a0 Students will also learn about some of the common issues that arise when dealing with multiple modalities such as data scarcity,\u00a0 positive-unlabeled learning, structured prediction, and the challenges in evaluating these systems.<\/p>\n<p><strong>Prerequisites:<\/strong><span>\u00a0<\/span>CS542 (Machine Learning) or equivalent, or consent of instructor.\u00a0 In addition,\u00a0CS 591 Deep Learning and CS 507 Intro to Optimization are recommended. Students should also be comfortable reading and discussing current research papers.<\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/bplum\/\">Bryan Plummer<\/a><\/p>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"false\" role=\"0\" tabindex=\"0\">CS 591 S1<span>\u00a0<\/span><span>PRIVATE DATA ANALYSIS<\/span><\/h4>\n<p><strong>Course Description:<span>\u00a0<\/span><\/strong>How can we analyze sensitive data sets\u2014computing useful summaries, training accurate learning models, and drawing valid inference\u2014without endangering the privacy of the individuals whose data we are processing? The course will take a rigorous approach to the problem, covering attacks on privacy, current definitional approaches, and state of the art algorithms. The course will mostly focus on \u201cdifferential privacy\u201d, an emerging standard for private data analysis.<\/p>\n<p><strong>Prerequisites:<span>\u00a0<\/span><\/strong>Undergraduate-level background in algorithms (CS330), graduate-level background in probability (e.g. CS537 or similar). Graduate-level background in statistics or stochastic processes is acceptable; please consult instructor.<\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"https:\/\/www.bu.edu\/cs\/profiles\/adam-smith\/\">Adam Smith<\/a><\/p>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"false\" role=\"0\" tabindex=\"0\">CS 591 S2<span>\u00a0<\/span><span>FAIRNESS, ACCOUNTABILITY, AND TRANSPARENCY IN AI<\/span><\/h4>\n<p><strong>Course Description:\u00a0<\/strong>Enabling the responsible development of artificial intelligence technologies is one of the major challenges we face as the field moves from research to practice.\u00a0Researchers and practitioners from different disciplines have highlighted the ethical and legal challenges posed\u00a0by the use of\u00a0machine learning in many current and future real-world applications.\u00a0 Now there are calls from across the industry (academia, government, and industry leaders) for technology creators to ensure that AI is used only in ways that benefit people and \u201cto engineer responsibility into the very fabric of the technology.\u201d\u00a0Overcoming these challenges and enabling responsible development is essential to ensure a future where AI and machine learning can be widely used across different domains.\u00a0This course will pursue a cross-disciplinary investigation of several areas under the responsible AI umbrella (fairness, interpretability, and accountability). Students will learn about state-of-the-art research and best practices in the covered domains and use available open-source fairness and interpretability toolkits to apply their learnings to publicly available datasets from healthcare, finance, and other domains.<\/p>\n<p><strong>Prerequisites:<\/strong><span>\u00a0<\/span><span>Graduate standing or permission of instructor. Intermediate knowledge of machine learning algorithms. Intermediate knowledge of machine learning and programming and experience with a high-level programming language (i.e. Java, C++, Python), data structures and basic algorithms.<\/span><\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"http:\/\/cs-people.bu.edu\/sameki\">Mehrnoosh Sameki<\/a><\/p>\n<h4 style=\"text-align: justify;\">Graduate Only<\/h4>\n<h4 class=\"bu_collapsible inverted_bu_collapsible\" aria-expanded=\"true\" role=\"0\" tabindex=\"0\">GRS CS 791 N1 APPLIED MACHINE LEARNING FOR PUBLIC HEALTH<\/h4>\n<p><strong>Course Description:\u00a0<\/strong>Machine learning (ML) methods are being used in the analysis of data (e.g., text, image, sound, video and biological data) to understand disease and health trends, and to improve individual and population health. The goal of this course is to provide students with prior knowledge of ML techniques with the opportunity to gain hands-on experience working on a data analysis project. Throughout the semester, students will work in groups to apply ML to solve a specific problem submitted by one of our research partners. Weekly lectures will focus on exposing students to (a) applications of ML to public health problems, (b) openly available computational resources, and (c) ongoing research by experts working in ML and health. The course is open to both Masters and PhD students.<\/p>\n<p><strong>Prerequisites:\u00a0<\/strong>Completion of CS 542 (Machine Learning) or a similar course or permission of the instructor.<\/p>\n<p><strong>Instructor:<span>\u00a0<\/span><\/strong><a href=\"https:\/\/www.bu.edu\/sph\/profile\/elaine-nsoesie\/\">Elaine Nsoesie<\/a>, Assistant Professor of Global Health, School of Public Health<\/p>\n<p><span style=\"font-size: 16px;\"><\/div>\n<\/div>\n<\/span><\/p>\n<hr \/>\n<div class=\"bu_collapsible_container \" aria-live=\"polite\" data-customize-animation=\"false\"><h4 class=\"bu_collapsible\" aria-expanded=\"false\"tabindex=\"0\" role=\"button\">Fall 2020 Course Descriptions<\/h4><div class=\"bu_collapsible_section\" style=\"display: none;\">\n<h4 style=\"text-align: justify;\">Undergraduate Only<\/h4>\n<h4 style=\"text-align: justify;\">CS 391 G1 Introduction to Information Security <strong>*counts toward Group D requirement for CS Major*<\/strong><\/h4>\n<p style=\"text-align: justify;\"><strong><span>Course Description: <\/span><\/strong>Provides basic concepts needed for understanding information security. Discusses vulnerabilities, concerns, design principles, basic algorithms, and analytical methods. Covers system, network, and application security, as well as introductions to cryptography and data privacy. Social, legal and political aspects of security are also addressed. This class aims to be a first course in information security, and is a gateway to all other security and cryptography course offerings.<\/p>\n<p><strong>Prerequisites:\u00a0<\/strong>CS 210 and one Group B course (CS 132, CS 235, or CS 237)<\/p>\n<p style=\"text-align: justify;\"><strong>Instructor:\u00a0<\/strong>Sharon Goldberg<\/p>\n<h4 style=\"text-align: justify;\"><strong><\/strong>CS 391 T1 Foundations of Data Science\u00a0<strong>*counts toward Group D requirement for CS Major*<\/strong><\/h4>\n<p style=\"text-align: justify;\"><strong><span>Course Description:<\/span><\/strong><\/p>\n<div id=\"docs-chrome\" role=\"group\" class=\"docs-material companion-enabled\" style=\"text-align: justify;\" tabindex=\"0\">\n<div id=\"docs-additional-bars\">\n<div id=\"waffle-editorsized-bar\">\n<div id=\"formula-bar\">\n<div id=\"t-formula-bar-input-container\">\n<div dir=\"ltr\">\n<div spellcheck=\"false\" aria-hidden=\"false\" id=\"t-formula-bar-input\">\n<div class=\"cell-input\" role=\"textbox\" contenteditable=\"true\" docs-unhandledkeys=\"\" dir=\"ltr\" tabindex=\"0\">\n<p><span>This course is intended as the first to take for students interested in the aspects of computer science related to data analysis and data management. It specifically serves as a preparation including, but not limited, to the courses CS460, CS506, CS542 and CS565. Course topics will cover data collection, cleaning and visualization. Data modeling and basics of data bases. Mathematical foundations of data science including linear algebra, (multivariate) calculus and convex optimization. Topics in data mining, such as similarity and distance functions, clustering, ranking, networks. Introduction to machine learning. Prediction methods, e.g. regression and common measures.<\/span><\/p>\n<p><strong>Prerequisites:\u00a0<\/strong>CS 112 and CS 131 or consent of instructor.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p style=\"text-align: justify;\"><strong>Instructor:\u00a0<\/strong>Evimaria Terzi<\/p>\n<h4 style=\"text-align: justify;\">Undergraduate and Graduate<\/h4>\n<h4 style=\"text-align: justify;\">CS 501 T1 &amp; T2 <span>Spark! Practicum<\/span><\/h4>\n<p>CS 501 T1: Spark! Software Engineering Practicum<\/p>\n<p>CS 501 T2: Spark! Machine Learning Practicum<\/p>\n<p style=\"text-align: justify;\"><strong><span>Course Description:<\/span><\/strong><\/p>\n<p style=\"text-align: justify;\"><span>The Spark! Practicum offers computer science students the opportunity to apply their computer science and engineering skills by working on real-world projects. The course offers a range of project options where students can improve their technical skills, while also gaining the \u201csoft skills\u2019 necessary to deliver projects aligned to the partner\u2019s goals. These include teamwork and communications skills and software development processes. All students participating in the course are expected to complete the project including a final presentation to the partner organization.<\/span><\/p>\n<p><strong>Prerequisites:\u00a0<\/strong><\/p>\n<p>CS 501 T1: CS 411 or equivalent, or instructor&#8217;s consent<\/p>\n<p>CS 501 T2: CS 542 or equivalent, or instructor&#8217;s consent<\/p>\n<p><strong>Instructor:\u00a0<\/strong>Dharmesh Tarapore<\/p>\n<h4 style=\"text-align: justify;\">CS 591 A1 <span>Parallel Computing and Programming<\/span><\/h4>\n<p style=\"text-align: justify;\"><strong><span>Course Description: <\/span><\/strong><span>This course is an introduction to the theory, techniques, and practices of parallel computing.\u00a0 We will begin by exploring the principle models of parallel computation, such as shared-memory, threads, thread pools, pipelines, and message passing, as well as the challenges these approaches pose, and known methods for addressing them.\u00a0 Next, we will consider various systems and settings that support parallel computation, from multicore architectures and other hardware devices to distributed systems.\u00a0 Finally, we will get acquainted with what parallel programming allows us to do: the design and analysis of distinctively parallel algorithms, their benefits, and their limitations.\u00a0 Students will prepare programming exercises, including the simulation of distributed systems, as well as a team-based final project.\u00a0 Students will need to have, or to acquire, an acquaintance with C++ and Python for this course.<\/span><\/p>\n<p><strong>Prerequisites: <\/strong>Systems Programming (<a href=\"https:\/\/www.bu.edu\/academics\/cas\/courses\/cas-cs-210\/\">CS 210<\/a> or equivalent), Data Structures and Algorithms (<a href=\"https:\/\/www.bu.edu\/academics\/cas\/courses\/cas-cs-112\/\">CS 112<\/a> or equivalent), Design and Analysis of Algorithms (<a href=\"https:\/\/www.bu.edu\/academics\/cas\/courses\/cas-cs-330\/\">CS 330<\/a> or equivalent).<\/p>\n<p><strong>Instructor: <\/strong>Amittai Aviram<\/p>\n<h4 style=\"text-align: justify;\">CS 591 B2\u00a0<span>Networks &amp; Markets: Theory &amp; Application<\/span><\/h4>\n<p style=\"text-align: justify;\"><strong><span>Course Description:\u00a0<\/span><\/strong>Recently, the concept of a network has outgrown the narrower engineering mindset of a collection of interconnected machines to become more broadly relevant in a variety of applied settings which feature connectedness. Biological networks, social networks, online advertising networks, and networks involving hyperlinks, i.e., the WWW, are all examples of domains in which the theory and practice of networking science has now being applied. In parallel with this trend is the rise of online markets as a mediation point for commercial activity. Beginning with the advent of Internet platforms like eBay that employ online auctions, are many fascinating new markets: pay-per-click advertising markets, prediction markets, and two-sided platforms such as Uber and Airbnb. All of these application domains draw deeply on established methodologies that are highly familiar to computer scientists, notably graph theory and algorithms. However, they also build on theoretical foundations that is often unfamiliar territory to computer scientists, such as auction design, mechanism design, and the theory of matching markets. Finally, many important new technologies incorporate a mix of networks and markets, including information networks and recommender systems. In this class, we will build on the highly successful undergraduate text of Easley and Kleinberg to learn about the underlying theory of networks and markets, understand how modern-day digital applications connect to these foundations, and conduct our own independent projects to explore an aspect of a digital market more deeply.<\/p>\n<p style=\"text-align: justify;\">In this class, we will consider networks and markets from a broad and inter-disciplinary perspective, drawing primarily from insights from the Computer Science, Economics, and Marketing communities. This course is designed for students who are potentially interested in either pursuing a career in or conducting research related to online networked platforms. Please note that this course is not about entrepreneurship per se, but will provide useful background for prospective entrepreneurs. The capstone project of the course will be a research effort, conducted by teams of two or three, in which students conduct a quantitative measurement-driven analysis of a computational aspect of an e-commerce firm or of consumer behavior with respect to an e-commerce marketplace.<\/p>\n<p style=\"text-align: justify;\"><strong>Prerequisites:\u00a0<\/strong>This course is designed for declared CS majors who are fulfilling 400-level electives, as well as Masters students and entering Ph.D. students. CS 112, CS 131, and some knowledge of probability and statistics is required. CS 330 is suggested as a co-requisite. While students&#8217; backgrounds will vary, it is expected that students are nearing completion of an undergraduate CS major or are beginning their graduate studies. Seniors who are not CS majors should seek the instructor&#8217;s permission to enroll.<\/p>\n<p style=\"text-align: justify;\"><!--Enrollment is contingent on an application process, which can be accessed\u00a0<a href=\"https:\/\/bu-spark.typeform.com\/to\/KNsqBv\">here<\/a>.--><\/p>\n<p style=\"text-align: justify;\"><strong>Instructor: <\/strong>John Byers<\/p>\n<h4 style=\"text-align: justify;\">CS 591 E1 &amp; E2 Mobile App Development<\/h4>\n<p style=\"text-align: justify;\"><strong>Course Description:<\/strong> Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Java and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small groups, collaborating on a larger final project. Topics will include UI development, action bars, multi-touch, gestures, database and file I\/O. Students will also learn to make rich applications by consuming location and sensor information from device hardware.<\/p>\n<p style=\"text-align: justify;\"><strong>Prerequisites:<\/strong> No previous mobile application development experience is required, but a strong understanding of object-oriented programming and database development (from CS 112 and CS 460 or equivalent) is necessary.<\/p>\n<p style=\"text-align: justify;\"><strong>Instructor: <\/strong>Shereif El-Sheikh<\/p>\n<h4 style=\"text-align: justify;\">CS 591 L1 User-Centric Systems for Data Science<\/h4>\n<p style=\"text-align: justify;\"><strong>Course Description:\u00a0<\/strong>Understanding the behavior of data systems is hard. Questions like &#8220;Why does the system return certain results?&#8221; and &#8220;Why is the execution slow?&#8221; arise too often in large-scale data analysis. Answering such questions is still a cumbersome task that requires considerable amount of resources as well as manual work by experts.<\/p>\n<p>The course focuses on algorithmic techniques and design principles that help users get meaningful insights into the functionality of data processing systems. In the first part of the course, we will discuss methods for explaining system outputs, including approaches from databases, recommendation engines, and interpretable ML.<\/p>\n<p>In the second part, we will focus on techniques that help users understand system performance. We will discuss traditional and causal profiling, end-to-end tracing, root-cause analysis, and invariant checking techniques.<\/p>\n<p>The course website can be found <a href=\"https:\/\/jliagouris.github.io\/UCDS20\/\">here<\/a>.<\/p>\n<p style=\"text-align: justify;\"><strong>Prerequisites:\u00a0<\/strong>Strong programming skills, and basic knowledge of data structures, algorithms and computer systems (CS 111, CS 112, CS 210, or equivalent experience).<\/p>\n<p style=\"text-align: justify;\"><strong>Instructor: <\/strong>John Liagouris<\/p>\n<h4 style=\"text-align: justify;\">CS 591 R1 Sublinear Algorithms<\/h4>\n<p style=\"text-align: justify;\"><strong>Course Description:<\/strong> <span>This course will cover the design and analysis of algorithms that are restricted to run in sublinear time. Such algorithms are typically randomized and produce only approximate answers. A characteristic feature of sublinear algorithms is that they do not have time to access the entire input. Therefore, input representation and the model for accessing the input play an important role. We will study different models appropriate for sublinear algorithms. The course will cover sublinear algorithms discovered in a variety of areas, including graph theory, algebra, geometry, image analysis and discrete mathematics, and introduce many techniques that are applied to analyzing sublinear algorithms. We will learn techniques for analyzing randomized algorithms and proving lower bounds on their complexity.<\/span><\/p>\n<p style=\"text-align: justify;\"><strong>Prerequisites:\u00a0<\/strong>A course on randomness in computing (equivalent to CS 237 or CS 537) and on algorithm design and analysis (equivalent ot CS 330). You need to be comfortable with mathematical proofs. Most of the assignments in this course require proving some statement and some creativity in \ffinding the proof will be necessary.<\/p>\n<p style=\"text-align: justify;\"><strong>Instructor: <\/strong>Sofya Raskhodnikova<\/p>\n<h4 style=\"text-align: justify;\">CS 591 S1\u00a0<span>Fairness, Accountability, and Transparency in AI<\/span><\/h4>\n<p style=\"text-align: justify;\"><strong>Course Description:\u00a0<\/strong>Enabling the responsible development of artificial intelligence technologies is one of the major challenges we face as the field moves from research to practice.\u00a0Researchers and practitioners from different disciplines have highlighted the ethical and legal challenges posed\u00a0by the use of\u00a0machine learning in many current and future real-world applications.\u00a0 Now there are calls from across the industry (academia, government, and industry leaders) for technology creators to ensure that AI is used only in ways that benefit people and \u201cto engineer responsibility into the very fabric of the technology.\u201d\u00a0Overcoming these challenges and enabling responsible development is essential to ensure a future where AI and machine learning can be widely used across different domains.\u00a0This course will pursue a cross-disciplinary investigation of several areas under the responsible AI umbrella (fairness, interpretability, and accountability). Students will learn about state-of-the-art research and best practices in the covered domains and use available open-source fairness and interpretability toolkits to apply their learnings to publicly available datasets from healthcare, finance, and other domains.<\/p>\n<p style=\"text-align: justify;\"><strong>Prerequisites:<\/strong> <span>Graduate standing or permission of instructor. Intermediate knowledge of machine learning algorithms. Intermediate knowledge of machine learning and programming and experience with a high-level programming language (i.e. Java, C++, Python), data structures and basic algorithms.<\/span><\/p>\n<p style=\"text-align: justify;\"><strong>Instructor: <\/strong><a href=\"http:\/\/cs-people.bu.edu\/sameki\">Mehrnoosh Sameki<\/a><\/p>\n<h4 style=\"text-align: justify;\">CS 591 W1 Towards Universal Natural Language Understanding<\/h4>\n<p style=\"text-align: justify;\"><strong>Course Description:<\/strong> <span>Current human language technology systems exist primarily for languages where there is a high demand or widespread use. Given that there are thousands of languages in the world where neither annotated data nor existing technology exists, the quest for universal human language technology coverage remains. In this course, we will explore the challenges and ways to extend state-of-the-art machine learning algorithms to problems that involve natural language data for low resource languages for which no automated human language technology capability exists. We will discuss if the barrier to building universal natural language understanding is simply the lack of annotated data or if there is a need for new representations or algorithms for language understanding that can extend to many languages without large training data. This is a research-oriented course on statistical natural language processing (NLP). The course will focus on understanding and extending state-of-the-art machine learning algorithms to problems such as information extraction, named entity recognition, machine translation, and related tasks involving natural language data for many languages. This course involves two primary activities: (1) reading and discussing current research papers and (2) developing a novel approach to extend a past NLP research to problems under low resource settings. It assumes background in basic machine learning. Prior NLP experience is helpful, but not required.<\/span><\/p>\n<p style=\"text-align: justify;\"><strong>Prerequisites:<\/strong> <span>CAS CS 542 \u2013 Machine Learning or equivalent or consent of instructor<\/span><\/p>\n<p style=\"text-align: justify;\"><strong>Instructor: <\/strong>Derry Wijaya<\/p>\n<p><span style=\"font-size: 16px;\"><\/div>\n<\/div>\n<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Topics Courses Archive<\/p>\n","protected":false},"author":15206,"featured_media":0,"parent":11288,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/pages\/20459"}],"collection":[{"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/users\/15206"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/comments?post=20459"}],"version-history":[{"count":14,"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/pages\/20459\/revisions"}],"predecessor-version":[{"id":23124,"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/pages\/20459\/revisions\/23124"}],"up":[{"embeddable":true,"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/pages\/11288"}],"wp:attachment":[{"href":"https:\/\/www.bu.edu\/cs\/wp-json\/wp\/v2\/media?parent=20459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}