Harvard Extension Courses in Computer Science

Return to Department List

Computer Science

CSCI E-1b Section 1 (25393)

Spring 2023

Computer Science for Business Professionals

David J. Malan PhD, Gordon McKay Professor of the Practice of Computer Science, Harvard University

This course is a variant of Harvard College's introduction to computer science, CS50, designed especially for business professionals. Whereas CS50 itself takes a bottom-up approach, emphasizing mastery of low-level concepts and implementation details thereof, this course takes a top-down approach, emphasizing mastery of high-level concepts and design decisions related thereto. Ultimately this course empowers students to make technological decisions even if they are not technologists themselves. Topics include cloud computing, networking, privacy, scalability, security, and more, with an emphasis on web and mobile technologies. Students emerge from this course with first-hand appreciation of how it all works and all the more confident in the factors that should guide their decision making. This course is designed for managers, product managers, founders, and decision makers more generally.

CSCI E-1a Section 1 (15513)

Fall 2022

Understanding Technology

David J. Malan PhD, Gordon McKay Professor of the Practice of Computer Science, Harvard University

This course is for students who don't (yet) consider themselves computer persons. Designed for students who work with technology every day but don't necessarily understand how it all works underneath the hood or how to solve problems when something goes wrong, this course fills in the gaps, empowering students to use and troubleshoot technology more effectively. Through lectures on hardware, the internet, multimedia, security, programming, and web development as well as through readings on current events, this course equips students for today's technology and prepares them for tomorrow's as well.

CSCI E-3 Section 1 (15118)

Fall 2022

Introduction to Web Programming Using JavaScript

Laurence P. Bouthillier MS, Executive Director, University of British Columbia Extended Learning

This course provides an introduction to web development by way of the essential language and runtime environment that powers modern web interfaces. Through a series of examples and projects, students learn basic programming concepts while building an understanding of the power and complexities of JavaScript, which can perplex even experienced web developers. The course provides a solid foundation in computer programming in JavaScript: syntax and data structures, conditionals, objects, scope and closures, Ajax, the DOM, and event handling. Students gain an understanding of the popular libraries that power rich web applications such as jQuery, VueJS, and others. Upon completion, students are prepared to use JavaScript libraries in their projects, write their own or extend existing JavaScript libraries, and build rich web applications using these powerful tools. No computer programming experience is required, though exposure to basic HTML and CSS is helpful.

CSCI E-7 Section 1 (15376)

Fall 2022

Introduction to Computer Science with Python

Jeff Parker PhD, Lecturer in Extension, Harvard University

Python is a language with a simple syntax and a powerful set of libraries. It is an interpreted language, with a rich programming environment, including a robust debugger and profiler. While it is easy for beginners to learn, it is widely used in many scientific areas for data exploration. This course is an introduction to the Python programming language. We cover data types and control flow and introduce the analysis of program performance. The examples and problems used in this course are drawn from diverse areas such as text processing and simple graphics creation. Graduate-credit students implement a final project of their own design.

Prerequisites: Comfort with computers, text editors, and the command line.

CSCI E-7 Section 1 (25531)

Spring 2023

Introduction to Computer Science with Python

Henry H. Leitner PhD, Senior Lecturer on Computer Science, Harvard University

This course is an introduction to computer science for students without prior programming experience. We explore problem-solving methods and algorithm development using the high-level programming languages Python and Scratch. Python is a language with a simple syntax, and a powerful set of libraries. While it is easy for beginners to learn, it is widely used in many scientific areas for data exploration. We cover data types and control flow and introduce the analysis of program performance. The examples and problems used in this course are drawn from diverse areas such as text processing and simple graphics creation. We also examine theoretical and practical limitations related to unsolvable and intractable computational problems. Graduate-credit students implement a final project of their own design.

CSCI E-8b Section 1 (16696)

Fall 2022

Mobile GIS

Pinde Fu PhD, Platform Engineering Team Lead and Senior Principal Software Developer, Esri

We live in the post-PC era. We have far more smartphones, tablets, and wearable devices than desktops and laptops. With their advantages in mobility and location awareness, mobile devices have become an indispensable part of geographic information systems (GIS) solutions in sustainable development, health and human services, emergency management, and utilities. Consumer mobile GIS applications, such as Google Maps, Google Earth, Waze, and Zillow, have put the basic GIS capabilities in everyone's hands. This course focuses on enterprise mobile GIS, which offers a much wider variety of capabilities. Students learn the foundational principles, in-depth knowledge, and state-of-the-art technologies to manage, design, and implement mobile GIS projects. This course teaches students how to design GIS data, layers, maps, and smart logics for online and offline spatial data visualization, data collection, assets and users tracking, and field operation coordination based on Esri's mobile GIS products, including Survey123, Field Maps, QuickCapture, AuGeo, ArcGIS 360 VR, AuGeo, ArcGIS Earth, Indoors, and AppStudio. The course explores the popular types of applications and the frontiers in mobile GIS, including location-based services (LBS), volunteered geographic information (VGI), virtual reality (VR), and augmented reality (AR). Access to Harvard ArcGIS Online and Mobile ArcGIS applications is provided.

CSCI E-8 Section 1 (25121)

Spring 2023

Web GIS: Principles and Technologies

Pinde Fu PhD, Platform Engineering Team Lead and Senior Principal Software Developer, Esri

Web GIS, the combination of the web and geographic information systems (GIS), is a promising field. It has extended online maps and geospatial intelligence to the offices of millions and the hands of billions. This course aims to provide students with the principles and essential knowledge needed for managing web GIS projects, teach students the latest geospatial cloud technologies needed for building modern web GIS applications, and inspire students with real-world case studies. Technologies taught in this course include cloud GIS (ArcGIS Online and ArcGIS Enterprise), browser-based web applications (ArcGIS Instant applications, StoryMaps, Experience Builder, and Dashboards), mobile GIS applications (Survey123 and Field Maps), 3D web scenes, imagery services, spatial temporal data, and spatial data science. Virtual reality (VR), augmented reality (AR), big data analysis, and deep learning are also discussed in the context of web GIS. Access to Harvard ArcGIS Online and other ArcGIS software is provided.

Prerequisites: Basic experience with online maps or mobile maps.

CSCI E-10a Section 1 (14289)

Fall 2022

Introduction to Computer Science Using Java I

Henry H. Leitner PhD, Senior Lecturer on Computer Science, Harvard University

Intended for students with no previous programming background, this course introduces problem-solving methods and algorithm development using Java, one of the most popular high-level programming languages in the world. Students learn how to design, code, debug, and document programs using modern engineering techniques in a cloud-based Linux environment. Related topics include programming using iterative constructs, the basic aspects of arrays and recursion, string manipulation, parameter passing, information hiding and encapsulation using classes, and the functional decomposition of methods to enable object-oriented design. Some applications are chosen for their relevance to more advanced coursework in computer science while others involve nonscientific and business-related areas. Students can count two of the following three courses CSCI E-10a, CSCI E-10b, and CSCI E-50 toward a degree. They may not count all three toward a degree.

CSCI E-10b Section 1 (24027)

Spring 2023

Introduction to Computer Science Using Java II

Henry H. Leitner PhD, Senior Lecturer on Computer Science, Harvard University

This course is a continuation of CSCI E-10a, with an emphasis on object-oriented programming using Java, one of the world's most popular programming languages. We begin with the implementation of abstract data types using classes, focusing on encapsulation of procedures and data, inheritance hierarchies, and polymorphism across different object types. Other topics include string processing, multidimensional arrays, ArrayLists, Vectors, and linked lists; streams and file I/O; recursion; exception handling; threads and event-driven programming; and graphical user interface design using the Swing classes. The course concludes with an introduction to RISC machine architecture and aspects of compilers and operating systems. Programming exercises are conducted in a cloud-based Linux environment. Students can count two of the following three courses CSCI E-10a, CSCI E-10b, and CSCI E-50 toward a degree. They may not count all three toward a degree.

Prerequisites: CSCI E-10a, or the equivalent experience in a high-level programming language such as C, C++, or Java.

CSCI E-11 Section 1 (26067)

Spring 2023

The Frontiers of Computer Science: Big Data, the Internet of Things, and Cybersecurity

Brian Subirana PhD, Director, Auto-ID Laboratory, Massachusetts Institute of Technology

In this course, we review use cases and challenges of three interrelated areas in computer science: artificial intelligence (AI), the internet of things (IoT), and cybersecurity. Students gain an overview of the possibilities and challenges of building complex information systems that take advantage of recent advances in these fields. The course is divided into three parts, each focused on the instructor presenting the research conducted by leading Massachusetts Institute of Technology (MIT) experts in their fields. Students gain an understanding of what is possible and what not today, as well as what MIT researchers are trying to make possible in the near future. The course provides a framework to analyze the frontiers in computer science. The first part surveys state-of-the-art topics in designing AI products and services. The focus of this part of the course is to understand where the rapidly evolving frontier in AI areas is. It covers machine learning (including neural networks), speech processing, robotics computer vision, and natural language processing. Topics in this first section also include existing hurdles for successful AI design such as explainability, visualization, adversarial attacks, and institutional review board (IRB) approval. The AI segment has two weeks entirely devoted to healthcare, covering neural implants, ingestible robotics, multi-modal longitudinal diagnosis with deep neural networks, mechanical limbs including grasping, and wi-fi surveillance. The second part of the course looks at the IoT. While the promise of the IoT brings many new business prospects, it also presents significant challenges ranging from technology architectural choices to security concerns. This part of the course offers important insights into how to overcome these challenges and thrive in this exciting space. The concept of IoT has begun to make an impact in industries ranging from industrial systems to home automation to healthcare. MIT researchers continue to conduct ground-breaking research on topics that are presented ranging from radio frequency identification (RFID) to cloud technologies, and from sensors to the world wide web. The third and final part of the course covers cybersecurity issues related to hardware, software, cryptography, blockchain, and policy to make better, safer decisions. Topics include systems (secure architectures, network security, secure programming languages, and system verification); algorithmic solutions (public key cryptography, multi-party computation, secret sharing, distributing trust, and computing on encrypted data); public policy issues in cybersecurity; and case studies (BitLocker, web security, and mobile phone security).

Prerequisites: An introductory computer science course (for example, CSCI E-3, CSCI E-7, or CSCI E-10a) plus familiarity with precalculus mathematics (MATH E-10 or the equivalent).

CSCI E-12 Section 1 (15078)

Fall 2022

Fundamentals of Website Development

David P. Heitmeyer AM, Director of Academic Platforms and Development, Harvard University Information Technology

This course provides a comprehensive overview of website development. Students explore the prevailing vocabulary, tools, and standards used in the field and learn how the various facets including HTML5, CSS, JavaScript, Ajax, multimedia, scripting languages, HTTP, clients, servers, and databases function together in today's web environment. The course provides a solid web development foundation, focusing on content and client-side (browser) components (HTML5, CSS, JavaScript, multimedia), with an overview of the server-side technologies. In addition, software and services that are easily incorporated into a website (for example, maps, checkout, blogs, content management) are surveyed and discussed. Students produce an interactive website on the topic of their choice for the final project and leave the course prepared for more advanced and focused web development studies.

Prerequisites: Basic familiarity working with computers, including file management.

CSCI E-14a Section 1 (16444)

Fall 2022

Building Interactive Web Applications for Data Analysis

Zona Kostic PhD

This course introduces students to essential aspects of data-driven web applications and covers techniques for creating custom solutions with the ML programming language. Python-based frameworks and visualization libraries are used to build fully functional project architectures for interactive exploratory data analysis. Students learn how to process data into a web application taking care of both front-end visual attractiveness and back-end functionality. Specifically, the course covers understanding the web and its components, working with supervised machine learning techniques and frameworks, designing of effective interactions and data visualizations, and working with relational and non-relational databases. Upon completion, project setups are deployed to the cloud infrastructure, leveraging the dynamic nature of data-intensive applications.

Prerequisites: Familiarity with Python programming language, basic data science concepts, and experience with front-end development. Some experience with data visualization is useful, but not required.

CSCI E-15 Section 1 (24574)

Spring 2023

Web Server Frameworks with Laravel/PHP

Susan Buck MPS, Web Programmer

The needs of modern web applications vary greatly depending on the business/product the application is serving, but certain functionality is common to most applications. Such functionality includes registration/authentication, form processing and validation, routing, caching, and database interfacing. While this functionality can be built from scratch with any server-capable language, it is more efficient to use a framework that provides this common functionality out of the box, allowing developers to focus on the specific business needs of their application. In this course, students learn about framework-based web application development via the lens of the PHP framework Laravel. Along the way, we explore paradigms common to web frameworks beyond Laravel, such as routing, controllers, models, views, and object-relational mapping. Over the course of the semester, we build stand-alone web applications and also look at how to build web services that can act as the backend to single-page applications built using tools such as Angular, React, or Vue.js.

Prerequisites: DGMD E-2 or equivalent foundation in programming. Students should also be comfortable with HTML/CSS and basic website publishing (CSCI E-12 or equivalent). For more information about the prerequisites, see http://hesweb.dev/e15/prereq.

CSCI E-19 Section 1 (16404)

Fall 2022

Software Testing and Test-Driven Development

Aline Yurik PhD, Director, Information Technology, Blue Cross Blue Shield of Massachusetts

In this course we review the traditional software testing techniques that are applicable to any software product, as well as learn techniques for behavior-driven development and testing. The agile development paradigm of test-driven development is discussed. We also discover how innovative companies are able to build testing and quality into every stage of the development process and deliver a multitude of releases with a relatively small testing organization. We practice test creation and testing techniques through discussions and assignments. An option to apply behavior-driven development and testing techniques with Cucumber framework is available in assignments. Use of testing in continuous delivery/continuous integration software delivery approach is explored. Concepts covered include test cycles, testing objectives, testing in the software development process, types of software errors, reporting and analyzing software errors, problem tracking systems, test case design, testing tools, test planning, test documentation, and managing a test group.

Prerequisites: CSCI E-10b, or the equivalent.

CSCI E-20 Section 1 (26502)

Spring 2023

Discrete Mathematics for Computer Science

Rebecca Nesson PhD, Associate Senior Lecturer on Computer Science and Dean for Academic Programs, Harvard School of Engineering and Applied Sciences

This course teaches all the math not taught in the traditional calculus/linear algebra sequence that is needed to take more advanced courses in theory of computation and/or algorithms. That is, it teaches discrete mathematics, logic, and basic probability, but does not teach calculus or linear algebra. It also gives a good introduction to reading mathematical notation and writing formal proofs. A principal objective of the course is to not just teach a set of mathematical topics, but also to prepare students to think mathematically and to read and write mathematics.

Prerequisites: MATH E-10 or the equivalent.

CSCI E-22 Section 1 (14309)

Fall 2022

Data Structures

David G. Sullivan PhD, Master Lecturer on Computer Science, Boston University

This course is a survey of fundamental data structures for information processing, including lists, stacks, queues, trees, and graphs. It explores the implementation of these data structures (both array-based and linked representations) and examines classic algorithms that use these structures for tasks such as sorting, searching, and text compression. The Java programming language is used to demonstrate the topics discussed; and key notions of object-oriented programming, including encapsulation and abstract data types, are emphasized.

Prerequisites: A good working knowledge of Java (CSCI E-10b, or the equivalent).

CSCI E-23a Section 1 (16214)

Fall 2022

Introduction to Game Development

Colton T. Ogden Chief Technology Officer, From Zero LLC

This course focuses on the development of 2D and 3D interactive games. Students explore the design of such childhood games as Super Mario Bros., Legend of Zelda, and Portal in a quest to understand how video games themselves are implemented. Via lectures and hands-on projects, the course explores principles of 2D and 3D graphics, animation, sound, and collision detection using frameworks like Unity and L VE 2D, as well as languages like Lua and C#. By course's end, students have programmed several of their own games and gained a thorough understanding of the basics of game design and development.

Prerequisites: CSCI E-7, CSCI E-10a, CSCI E-10b, CSCI E-50, CS50x, or prior programming experience in any language.

CSCI E-23a Section 1 (26415)

Spring 2023

Introduction to Game Development

Colton T. Ogden Chief Technology Officer, From Zero LLC

This course focuses on the development of 2D and 3D interactive games. Students explore the design of such childhood games as Super Mario Bros., Legend of Zelda, and Portal in a quest to understand how video games themselves are implemented. Via lectures and hands-on projects, the course explores principles of 2D and 3D graphics, animation, sound, and collision detection using frameworks like Unity and L VE 2D, as well as languages like Lua and C#. By course's end, students have programmed several of their own games and gained a thorough understanding of the basics of game design and development.

Prerequisites: CSCI E-7, CSCI E-10a, CSCI E-10b, CSCI E-50, CS50x, or prior programming experience in any language.

CSCI E-25 Section 1 (26285)

Spring 2023

Computer Vision

Stephen Elston PhD, Principal Consultant, Quantia Analytics LLC

Computer vision is an exciting and rapidly changing field. In a little over ten years, deep learning algorithms have revolutionized several aspects of computer vison. Applications that were infeasible or impractical a few years ago are now in routine production. These advances allow intelligent systems to interact with the real-world using vision. Examples of modern computer vision (CV) applications include digital photography, robotic or autonomous vehicles, medical imaging, and scientific imaging. This course is a fast-moving survey of both fundamental theory of CV algorithms along with hands-on practical assignments applying these methods using Python. Successfully deploying CV applications often requires a combination of classical methods and state-of-the-art algorithms. Therefore, this course includes classical image processing and CV techniques which are the basis of many standard CV applications. From this foundation the course moves to the deep learning approaches that have revolutionized computer vision. Students apply tools drawn from the extensive universe of Python CV related packages in the hands-on assignments. Major topics covered in the course include: algorithms used to prepare images, transform images and extract features; statistical properties of images and methods of decomposition; classification of objects in images; optimization and regularization for machine learning algorithms; deep neural networks for image classification; motion in images and optical flow; advanced deep neural network architectures; object detection and tracking algorithms; models of stereo vision; segmentation of images; and generative models.

Prerequisites: Experience programming using the Python language, equivalent to CSCI E-7 or CSCI E-29. For people with limited Python programming experience, some experience programming, in any language, such as R, Matlab, or C++ is helpful. Some exposure to basic machine learning and data science methods, equivalent to CSCI E-101, is helpful but not essential. Knowledge of linear algebra, including eigenvalue-eigenvector decomposition and a bit of differential and integral calculus is essential.

CSCI E-26 Section 1 (14294)

Fall 2022

Introduction to C, Unix/Linux Programming, and Web Interfaces

Bruce Molay AB, Lecturer in Extension, Harvard University

Designed for students with some programming experience, this course provides a rigorous introduction to writing and using software tools in the Unix and GNU/Linux programming environments to build command-line and web-based programs. The course teaches students how to write C programs and Unix shell scripts, and how to create web interfaces to those programs. Topics include text processing, memory management, files and pipes, and processes and protocols. Students write programs to analyze data and generate reports, use shell scripts to combine tools into applications, and use HTML, CGI, and Ajax to provide web access to those applications and data.

Prerequisites: A working knowledge of a structured programming language such as C++, Java, JavaScript, or Python; a data structures course such as CSCI E-22.

CSCI E-28 Section 1 (24040)

Spring 2023

Unix/Linux Systems Programming

Bruce Molay AB, Lecturer in Extension, Harvard University

As an introduction to the fundamental structure and services of the Unix and Linux operating systems, this course combines theory with programming at the system call level. Topics include files and directories, device control, terminal handling, processes and threads, signals, pipes, and sockets. Examples and exercises include directory management utilities, a shell, and a web server.

Prerequisites: Solid knowledge of C or C++ at the level of CSCI E-26 and a data structures course such as CSCI E-22; some experience using Unix helpful.

CSCI E-31 Section 1 (25038)

Spring 2023

Web Application Development using Node.js

Laurence P. Bouthillier MS, Executive Director, University of British Columbia Extended Learning

This course provides an introduction to web application development by way of JavaScript and the node.js environment. Students learn the basics of server-side web development using the MEAN stack (MongoDB, Express.js, Angular, node.js). Using the MEAN stack, the course introduces students to models of software development that can apply to any web development environment, including the application server (node.js), Model View Controller (MVC) frameworks using Express.js, front-end frameworks (Angular), and databases (MongoDB). The course includes setting up a node.js environment, building representational state transfer (REST) application programming interfaces (APIs) and full-stack JavaScript applications using the MEAN stack, and following good application development practices. Experience with server-side application development is not required, though knowledge of client-side web development (HTML/CSS/JavaScript) is important.

Prerequisites: Basic HTML/JavaScript. CSCI E-3 and CSCI E-12 are excellent preparations for this course.

CSCI E-33a Section 1 (25184)

Spring 2023

Web Programming with Python and JavaScript

Brian Paul Yu EdM, Software Engineer, Automattic

This course examines the design and implementation of web applications with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap. Topics include database design, scalability, security, and user experience. Through hands-on projects, students learn to write and use application programming interfaces (APIs), create interactive user interfaces (UIs), and leverage cloud services like GitHub and Heroku. By semester's end, students emerge with knowledge and experience in the principles, languages, and tools that empower them to design and deploy applications on the internet.

Prerequisites: CSCI E-50, CS50x, or prior programming experience in any language.

CSCI E-33a Section 1 (16215)

Fall 2022

Web Programming with Python and JavaScript

Brian Paul Yu EdM, Software Engineer, Automattic

This course examines the design and implementation of web applications with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap. Topics include database design, scalability, security, and user experience. Through hands-on projects, students learn to write and use application programming interfaces (APIs), create interactive user interfaces (UIs), and leverage cloud services like GitHub and Heroku. By semester's end, students emerge with knowledge and experience in the principles, languages, and tools that empower them to design and deploy applications on the internet.

Prerequisites: CSCI E-50, CS50x, or prior programming experience in any language.

CSCI E-34 Section 1 (14557)

Fall 2022

User Experience Engineering

David S. Platt ME, President, Rolling Thunder Computing, Inc.

Success in today's software marketplace requires excellent user experience (UX). This course presents the foundations of excellent UX in a platform-agnostic manner. This course requires no programming. Instead, we focus on deciding what to program to make our users happier and more productive. Students learn to start with the user, not the toolkit. Who are our users and how do we represent them with personas? What problems are these users trying to solve, what would they consider a good solution, and how do we represent that with stories? How should the user interaction flow and how do we represent it with quick, inexpensive mockups? How can we test different designs on users? How can we learn what users really do, instead of what they can remember or will admit to? Students work on a term project of their choosing, performing all steps of the UX design process. We use modern design tools such as Figma. We examine in-depth case studies and hear from industry-leading guest speakers. Students finish this course with a starter portfolio to show potential employers.

Prerequisites: One year of computer science education (CSCI E-10a and CSCI-10b, or CSCI E-12 and CSCI E-15, or CSCI E-26), or equivalent software development experience. Familiarity with the client program development system of your choice. This can be any development tool with which you can complete the term project. See the project description in the syllabus.

CSCI E-39 Section 1 (16734)

Fall 2022

Design Principles in React

Nicolas Javier Tejera Aguirre ALM, Chief Technology Officer, Tolemi

This course teaches students how to implement usable and understandable applications using ReactJS, including core concepts of design like typography, color theory, and visual hierarchy. The first weeks cover introduction to font families, color palettes, and design principles, and how to apply the right ones based on context. We then deep dive into ReactJS and build simple yet complete components, applying the acquired knowledge to produce user-friendly and proportionally designed objects. We finalize by building a small web application, leveraging existing component libraries and frameworks.

Prerequisites: Proficiency in Javascript, HTML, and CSS.

CSCI E-40 Section 1 (14296)

Fall 2022

Communication Protocols and Internet Architectures

Leonard Evenchik SM, Lecturer in Extension, Harvard University

Networks are now too large, complex, and diverse to be built on an ad hoc basis. This course provides a structured approach to the design, analysis, and implementation of networks and protocols. We study various protocols, including TCP/IP, WWW/HTTP, e-mail/SMTP, domain name system (DNS), multimedia protocols for voice and video, routing protocols (RIP, OSPF, and BGP), and the IEEE 802 LAN protocol suite. In each case, the protocol's functions and the underlying reference model are discussed. LAN architecture and design, network security and encryption, and the design and analysis of both private networks and the internet are presented. The course discusses new areas of work, including real-time voice and video on the internet, quality of service (QoS), gigabit wireless networks, internet of things (IoT), software-defined networks (SDN), and network functions virtualization (NFV).

Prerequisites: Programming or networking experience; a basic understanding of the principles of communication protocols.

CSCI E-40 Section 1 (24033)

Spring 2023

Communication Protocols and Internet Architectures

Leonard Evenchik SM, Lecturer in Extension, Harvard University

Networks are now too large, complex, and diverse to be built on an ad hoc basis. This course provides a structured approach to the design, analysis, and implementation of networks and protocols. We study various protocols, including TCP/IP, WWW/HTTP, e-mail/SMTP, domain name system (DNS), multimedia protocols for voice and video, routing protocols (RIP, OSPF, and BGP), and the IEEE 802 LAN protocol suite. In each case, the protocol's functions and the underlying reference model are discussed. LAN architecture and design, network security and encryption, and the design and analysis of both private networks and the internet are presented. The course discusses new areas of work, including real-time voice and video on the internet, quality of service (QoS), gigabit wireless networks, internet of things (IoT), software-defined networks (SDN), and network functions virtualization (NFV).

Prerequisites: Programming or networking experience; a basic understanding of the principles of communication protocols.

CSCI E-43 Section 1 (24587)

Spring 2023

How to Assess and Communicate Risk in Information Security

Derek Brink MBA, Vice President and Research Fellow, Aberdeen Strategy and Research

In simple terms, risk is the likelihood of something bad taking place, and the resulting business impact if it does in fact occur. We often talk about the bad things that could happen that is, the threats, vulnerabilities, and exploits, and the technologies that are used to defend against them but these are not risks. Senior business leaders need their subject-matter experts in cyber security to advise them not about the technical details (the "what"), but about the risk (the "so what"), and about how an incremental investment in recommended security controls quantifiably reduces that risk. This course covers how to assess security risks, properly defined, how to use these risk assessments to make better-informed recommendations regarding what to do about them, and how to communicate these risks more effectively to business decision makers.

Prerequisites: CSCI E-45a, CSCI E-45b, or the equivalent.

CSCI E-45b Section 1 (24037)

Spring 2023

The Cyber World: Governance, Threats, Conflict, Privacy, Identity, and Commerce

Scott Bradner - Benoit Gaucherin Maitrise, Senior Director of Information Technology, Campus Systems, Harvard University

Today we all live and work in a participatory cyberspace. Computers, the data networks that interconnect them, and the services available over the networks make up this cyberspace. As cyberspace invades almost all areas of modern day living, playing, and working, it is becoming more important that people understand its technical and political underpinnings and operations, as well as its capabilities, threats, and weaknesses. This is a companion course to CSCI E-45a. The goal of this pair of courses is to give students the tools they need to understand, use, and manage the technologies involved, as well as the ability to appreciate the legal, social, and political dynamics of this ever expanding universe and the interplay between the cyber and physical worlds. The pair of courses covers the essential elements of computing and the history, structure, operation, and governance of the internet. This course explores the technical and legal aspects of the interactions and tensions between security, usability, privacy, and surveillance in a post NSA-revelation world. We also look at the technical and legal underpinnings that affect the use of cyberspace for businesses. Finally, we explore the rapidly changing dangers of cyberspace from viruses to state-sponsored cyber-conflict.

CSCI E-45a Section 1 (14299)

Fall 2022

The Cyber World: Hardware, Software, Networks, Security, and Management

Scott Bradner - Benoit Gaucherin Maitrise, Senior Director of Information Technology, Campus Systems, Harvard University

Today we all live and work in a participatory cyberspace. Computers, the data networks that interconnect them, and the services available over the networks make up this cyberspace. As cyberspace invades almost all areas of modern day living, playing, and working, it is becoming more important that people understand its technical and political underpinnings and operations, as well as its capabilities, threats, and weaknesses. This is a companion course to CSCI E-45b. The goal of this pair of courses is to give students the tools they need to understand, use, and manage the technologies involved, as well as the ability to appreciate the legal, social, and political dynamics of this ever expanding universe and the interplay between the cyber and physical worlds. The pair of courses covers the essential elements of computing and the history, structure, operation, and governance of the internet. This course focuses on the fundamental workings of the digital world. From individual computing devices to the broader internet, students learn how each piece in this gigantic puzzle comes together to create the digital infrastructure that is the cyberspace of today and tomorrow. In addition, we explore the fundamental concepts, technologies, and issues associated with managing and securing cyberspace.

CSCI E-49 Section 1 (24557)

Spring 2023

Cloud Security

Ramesh Nagappan MS, Security Technologist, Amazon

Cloud computing infrastructure has become a mainstay of the information technology industry, opening the possibility for on-demand, highly elastic, and infinite computer power with scalability and supporting the delivery of mission-critical secure enterprise applications and services. This course provides ground-up coverage on the high level concepts of cloud landscape, architectural principles, development techniques, design patterns, and real-world security best practices as applied to cloud service providers and consumers. It also addresses regulatory compliance requirements critical to design, implement, deliver, and manage secure cloud-based services. The course delves into the secure cloud-based application development processes that build on DevOps and DevSecOps processes, proactively identifying and mitigating risks with threat models, protection, and isolation of physical and logical infrastructures including computer storage (cloud-hosted virtualization, containerization using Docker and Kubernetes) and network topologies; comprehensive data protection with applied cryptography; end-to-end identity management and access control; monitoring, auditing, intrusion detection, and incident response processes; fraud detection (using machine learning and artificial intelligence techniques); and complying with industry and regulatory mandates. The course leverages cloud computing security guidelines set forth by the International Organization for Standardization (ISO), National Institute of Standards and Technology (NIST), European Union Agency for Network and Information Security (ENISA), and Cloud Security Alliance (CSA).

Prerequisites: One of the following courses: CSCI E-7, CSCI E-12, CSCI E-33a, CSCI E-45a, CSCI E-45b, CSCI E-46, CSCI E-90, CSCI E-94, or the equivalent. Additional web application development and/or systems administration knowledge will be very helpful.

CSCI E-49a Section 1 (16685)

Fall 2022

Cryptography and Identity Management for Cloud and Internet of Things (IoT) Applications

Ramesh Nagappan MS, Security Technologist, Amazon

Confidentiality, integrity, availability, authentication, authorization, and accountability are the most critical security requirements that serve as the basis for deploying and delivering trustworthy information technology (IT) applications and services in on-premise enterprises, cloud provider hosted platforms, and network-centric devices that are connected to the internet. Adopting cryptography and identity management solutions for data protection and access control addresses these security requirements and has become a vital part of all business applications, electronic transactions, IT networks, cloud providers, and internet of things (IoT). This course provides a ground-up coverage on the high-level concepts, applied mechanisms, architecture, design, and real-world implementation practices of using cryptography and identity management solutions as they apply to cloud-hosted applications, services, and IoT devices.

Prerequisites: CSCI E-49, CSCI E-90, CSCI E-118, or equivalent. Experience with web application development and/or systems administration using a cloud provider is helpful.

CSCI E-50 Section 1 (14290)

Fall 2022

Intensive Introduction to Computer Science

David J. Malan PhD, Gordon McKay Professor of the Practice of Computer Science, Harvard University

This course is an intensive introduction to the intellectual enterprises of computer science and the art of programming. It teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming. Languages include C, Python, and SQL plus HTML, CSS, and JavaScript. Problem sets are inspired by the arts, humanities, social sciences, and sciences. The course culminates in a final project. Students can count two of the following three courses CSCI E-10a, CSCI E-10b, and CSCI E-50 toward a degree. They may not count all three toward a degree.

CSCI E-50 Section 1 (24107)

Spring 2023

Intensive Introduction to Computer Science

David J. Malan PhD, Gordon McKay Professor of the Practice of Computer Science, Harvard University

This course is an intensive introduction to the intellectual enterprises of computer science and the art of programming. It teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming. Languages include C, Python, and SQL plus HTML, CSS, and JavaScript. Problem sets are inspired by the arts, humanities, social sciences, and sciences. The course culminates in a final project. Students can count two of the following three courses CSCI E-10a, CSCI E-10b, and CSCI E-50 toward a degree. They may not count all three toward a degree.

CSCI E-59 Section 1 (25690)

Spring 2023

Designing and Developing Relational and NoSQL Databases

Gregory Thomas Misicko ALM, Engineering Manager, NetApp Cloud Solutions

This course focuses on the design and development of databases using a very practical and hands-on approach to learning. Students begin by learning how to set up and configure a database server, followed by a thorough understanding of how to design and develop a real-world database built for stability and performance. Structured query language (SQL) is taught starting from the most basic level and leading up to an advanced level. As many projects today evaluate NoSQL options, students also learn about the more popular NoSQL options available and work with MQL and Cypher.

Prerequisites: Capable of learning new programming languages (such as SQL, MQL, or Cypher) from the beginning.

CSCI E-61 Section 1 (13836)

Fall 2022

Systems Programming and Machine Organization

Eddie Kohler PhD, Microsoft Professor of Computer Science and Harvard College Professor, Harvard University

This course covers the fundamentals of computer systems programming. It provides a solid background in data representation, systems programming, operating systems, and machine organization and design. The course centers on C++ programming, with some assembly language. Topics include data representation, assembly and machine programming, storage hierarchy and caching, kernel programming and virtual memory, process management, and concurrency (including threads and networking).

Prerequisites: CSCI E-26, CSCI E-50, or some experience programming in C++ or C.

CSCI E-63 Section 1 (25759)

Spring 2023

Big Data Analytics

Zoran B. Djordjevic PhD, Senior Enterprise Architect

The explosion of social media and the computerization of every aspect of social and economic activity resulted in the creation of huge volumes of semi-structured data: web logs, videos, speech recordings, photographs, emails, and Tweets. In a parallel development, computers keep getting ever more powerful and storage ever cheaper. Today, with the cloud, Spark, and other technologies, we can reliably and cheaply store huge volumes of data, efficiently analyze them, and extract business and socially relevant information. The emphasis of this course is on mastering the most important software frameworks, procedures, and algorithms for the processing of big data. Apache Spark 3 is the key big data technology. Spark is a result of the evolution of Hadoop and Map/Reduce ideas with significant speedup and scalability improvements. Students learn the most essential of Spark's application programming interfaces (APIs) like Spark Core, Spark SQL, GraphX, Structured Streaming, and other non-Spark computational, statistical, and machine-learning frameworks and algorithms, which make up the backbone of big data processing. In this course, students learn how to organize data in massive data lakes and create massive data pipelines using Spark SQL and other APIs both in batch mode and in real-time streaming mode. Students learn how to analyze highly connected data using Neo4J and Spark GraphX, in-memory graph databases. Students acquire practical skills with Kafka, a highly scalable messaging system, and learn to integrate Spark with NoSQL systems. Students conduct exercises in Amazon web services cloud (AWS) and master the most important AWS services.

Prerequisites: Proficiency in Python is recommended. All assignments could be done in Java, Scala, or R. Some familiarity with Linux is helpful. Students need access to a computer with a 64-bit operating system and at least 8 GB of RAM (32 GB is highly recommended).

CSCI E-63c Section 1 (24748)

Spring 2023

Elements of Data Science and Statistical Learning with R

Andrey Sivachenko PhD, Scientist IV, Head of Bioinformatics, Cystic Fibrosis Foundation Therapeutics Lab - Victor A. Farutin PhD, Director of Computational Sciences, Precede Biosciences

One of the broad goals of data science is examining raw data with the purpose of identifying its structure and trends, and of deriving conclusions and hypotheses from it. In the modern world awash with data, data analytics is more important than ever to fields ranging from biomedical research, space and weather science, finance, business operations and production, to marketing and social media applications. This course introduces various statistical learning methods and their applications. The R programming language, a very popular and powerful platform for scientific and statistical analysis and visualization, is introduced and used throughout the course. We discuss the fundamentals of statistical testing and learning, and cover topics of linear and non-linear regression, clustering and classification, support vector machines, and decision trees. The datasets used in the examples are drawn from diverse domains such as finance, genomics, and customer sales and survey data.

Prerequisites: Good programming skills, preferably in R or solid experience in other languages; good understanding of probability and statistics at the level of CSCI E-106 or STAT E-109. See the syllabus for the recommended pretest.

CSCI E-63c Section 1 (15123)

Fall 2022

Elements of Data Science and Statistical Learning with R

Andrey Sivachenko PhD, Scientist IV, Head of Bioinformatics, Cystic Fibrosis Foundation Therapeutics Lab - Victor A. Farutin PhD, Director of Computational Sciences, Precede Biosciences

One of the broad goals of data science is examining raw data with the purpose of identifying its structure and trends, and of deriving conclusions and hypotheses from it. In the modern world awash with data, data analytics is more important than ever to fields ranging from biomedical research, space and weather science, finance, business operations and production, to marketing and social media applications. This course introduces various statistical learning methods and their applications. The R programming language, a very popular and powerful platform for scientific and statistical analysis and visualization, is introduced and used throughout the course. We discuss the fundamentals of statistical testing and learning, and cover topics of linear and non-linear regression, clustering and classification, support vector machines, and decision trees. The datasets used in the examples are drawn from diverse domains such as finance, genomics, and customer sales and survey data.

Prerequisites: Good programming skills, preferably in R or solid experience in other languages; good understanding of probability and statistics at the level of CSCI E-106 or STAT E-109. See the syllabus for the recommended pretest.

CSCI E-66 Section 1 (24046)

Spring 2023

Database Systems

David G. Sullivan PhD, Master Lecturer on Computer Science, Boston University

This course covers the fundamental concepts of database systems. Topics include data models (entity-relationship, relational, and others); query languages (relational algebra, SQL, and others); implementation techniques of database management systems (index structures, concurrency control, recovery, and query processing); management of semistructured and complex data; distributed and noSQL databases.

Prerequisites: CSCI E-22 or the equivalent, and strong programming skills in Java.

CSCI E-71 Section 1 (16441)

Fall 2022

Agile Software Development

Richard Kasperowski ALB, Consultant

This course is an immersive experience in agile software development. We study both the technical and cultural/social aspects of agile, including pair and mob programming, high performance teams with the core protocols, test-driven development (TDD), behavior-driven development, continuous delivery, refactoring, extreme programming, scrum, kanban, and agile project management.

Prerequisites: CSCI E-22 or the equivalent. Students must have a computer suitable for software development.

CSCI E-72 Section 1 (16452)

Fall 2022

Introduction to 3D Computer Graphics

Michael Shah MS, Assistant Teaching Professor, Khoury College of Computer Sciences, Northeastern University

This course teaches the fundamentals of 3D computer graphics to learners who want to make games, 3D simulations, and have an interest in image processing. We use C++ and OpenGL to explore computer graphics programming and understand how to utilize the graphics processing unit (GPU). Additional guidance on using C++ and a refresher of linear algebra and its application in graphics is provided.

Prerequisites: Previous experience with trigonometry and exposure to linear algebra.

CSCI E-79 Section 1 (25487)

Spring 2023

The Art and Design of Information

Zona Kostic PhD

Complex data has been translated into many visual forms in order to facilitate understanding of its content. However, not every transformation turns out to be effective. To compose a visual message and improve information communication, design practice is needed. This course introduces the strategies of visual thinking as an efficient method to convey complex data. It covers the fundamentals of visual communication and applies graphics design principles in the context of diverse media. Information design overlaps with other areas such as graphic design, communication design, data visualization, human-computer interaction design, and instructional design. The course combines the best practices from these intersections while focusing on effectiveness and visual clarity.

Prerequisites: Familiarity with Adobe Illustrator and experience working with Java Script.

CSCI E-80a Section 1 (16439)

Fall 2022

Introduction to Artificial Intelligence

Brian Subirana PhD, Director, Auto-ID Laboratory, Massachusetts Institute of Technology

This course introduces artificial intelligence (AI) programming tools inspired by our understanding of the human brain. The course includes four programming assignments in Python covering the four units of the brain as proposed by the Massachusetts Institute of Technology Center for Brain, Minds and Machines (CBMM): sensor stream, brain operating system, cognitive core, and symbolic compositional models. Collectively the four assignments introduce a set of tools and computer science concepts, with a focus on deep learning, spanning a basic skill set to program complete models able to perform AI tasks. Part of the assignments include comparing the deep learning tools implemented with other AI tools not based on neural networks. The focus of the assignments is to build models reproducing as closely as possible the complex cognitive tasks humans do naturally. Human intelligence can be characterized in a variety of ways and as part of the course, we review how various computer engineering applications may benefit from these different advances in modeling human intelligence. We discuss various integrative approaches aiming at combining experimental techniques in neuroscience and cognitive science, with computational modeling in order to elucidate the architecture of intelligence. The course provides background to understand some of the current limitations in our progress towards a general artificial intelligence machine.

Prerequisites: Some basic computer skills to install and program with Python, for example CSCI E-7.

CSCI E-80 Section 1 (25793)

Spring 2023

Introduction to Artificial Intelligence with Python

Brian Paul Yu EdM, Software Engineer, Automattic

This course explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like game-playing engines, handwriting recognition, and machine translation. Through hands-on projects, students gain exposure to the theory behind graph search algorithms, classification, optimization, reinforcement learning, and other topics in artificial intelligence and machine learning as they incorporate them into their own Python programs. By course's end, students emerge with experience in libraries for machine learning as well as knowledge of artificial intelligence principles that enable them to design intelligent systems of their own.

Prerequisites: CSCI E-50, CS50x, or at least one year of experience with Python.

CSCI E-80 Section 1 (16393)

Fall 2022

Introduction to Artificial Intelligence with Python

Brian Paul Yu EdM, Software Engineer, Automattic

This course explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like game-playing engines, handwriting recognition, and machine translation. Through hands-on projects, students gain exposure to the theory behind graph search algorithms, classification, optimization, reinforcement learning, and other topics in artificial intelligence and machine learning as they incorporate them into their own Python programs. By course's end, students emerge with experience in libraries for machine learning as well as knowledge of artificial intelligence principles that enable them to design intelligent systems of their own.

Prerequisites: CSCI E-50, CS50x, or at least one year of experience with Python.

CSCI E-82 Section 1 (15407)

Fall 2022

Advanced Machine Learning, Data Mining, and Artificial Intelligence

Peter Vaughan Henstock PhD, Machine Learning and Artificial Intelligence Lead, Pfizer, Inc.

The course is intended to combine the theory with the hands-on practice of solving modern industry problems with an emphasis on image processing and natural language processing. Topics include outlier detection, advanced clustering techniques, deep learning, dimensionality reduction methods, frequent item set mining, and recommender systems. Topics also considered include reinforcement learning, graph-based models, search optimization, and time series analysis. The course uses Python as the primary language, although later projects can include R and other languages. The course also introduces some industry standard tools to prepare students for artificial intelligence jobs.

Prerequisites: This course builds upon topics covered in CSCI E-63c and CSCI E-109a and CSCI E-109b with either CSCI E-63c or CSCI E-109a as a prerequisite. Students should be proficient in Python including Pandas and readily able to load, parse, and manipulate data. A course such as CSCI E-7 or a course on Python and machine learning would be useful.

CSCI E-83 Section 1 (16768)

Fall 2022

Fundamentals of Data Science

Stephen Elston PhD, Principal Consultant, Quantia Analytics LLC

This course builds on CSCI E-101, giving students a solid foundation for advanced data science modeling, machine learning, and artificial intelligence (AI). The course focuses on the modern computational statistical modeling methods, providing the path to understand advanced data science. The course employs a combination of theory and hands-on experience using Python programming tools. The focus is on foundational computational statistical analysis and effective visualization methods. The hands-on component of the course uses the Python packages NumPy, Pandas, Seaborn, Statsmodels, and PyMC3, along with selected other open-source packages. Basic computational statistical inference employing three approaches, maximum likelihood, bootstrap resampling, and Bayesian are addressed. An overview is presented of the properties and behavior of the rich family of linear models, foundational to many machine learning and AI algorithms. The course reviews probability theory, with an emphasis on conditional probability as a foundation of modern computational statistical methods, machine learning, and AI. Additionally, Bayesian models, inference, and time series methods are explored. An independent project is required of all students registering for graduate credit.

Prerequisites: Some exposure to basic machine learning and data science methods, equivalent to CSCI E-101. Experience programming using the Python language, equivalent to CSCI E-7 or CSCI E-29. For people with limited Python programming experience, some experience programming, in any language, such as R, Matlab, or C++, is essential. Knowledge of linear algebra, including eigenvalue-eigenvector decomposition and a bit of differential and integral calculus is essential.

CSCI E-87 Section 1 (16459)

Fall 2022

Big Data and Machine Learning in Healthcare Applications

Oleg Pianykh PhD, Assistant Professor of Radiology, Harvard Medical School, and Director of Medical Analytics, Massachusetts General Hospital

While large volumes of digital healthcare data have been captured for decades, we are only starting to mine them for information that can significantly advance healthcare delivery and quality. Built from many practical experiences, this course teaches students how to apply big data analytics and machine learning to the most challenging problems found in modern hospitals. We cover several important areas operational, clinical, and imaging using hands-on examples and real problems. Students not only learn how to build efficient data models, but also how to implement them in different healthcare environments, avoiding the most common pitfalls and achieving meaningful results.

Prerequisites: Basic understanding of statistics and machine learning. Programming in Python or Matlab is required for most homework assignments.

CSCI E-88a Section 1 (26380)

Spring 2023

Introduction to Functional and Stream Programming for Big Data Systems

Marina Yu Popova ALM, Engineer, TechTarget - Edward S. Sumitra MS, Associate Director, Curriculum Associates

This course is an introduction to the basic concepts of functional programming (FP) and its application to stream and distributed processing of large volumes of data in real time. In order to do this type of processing, highly scalable systems have to be designed and developed that are capable of performing data- and compute-intensive operations in a distributed manner over hundreds of physical servers. This course focuses on building the foundation of such systems, which are applications capable of processing data in a highly parallel fashion. In this course, students learn core functional programming concepts, understand how they are used as a foundation of parallel and distributed programming, learn about challenges and approaches to handling state in the aggregation and other stream operations and learn how they are used in high-level stream processing frameworks like Kafka, Akka streams, and Flink, as well as serverless architectures. At the conclusion of the course, we review how all the learned concepts are used in the real-world stream processing architectures of a few well-known companies. Students reinforce the learned concepts by completing hands-on assignments and practicing building simple stream processing pipelines (with and without high-level stream processing frameworks) using Java, Scala, and Python languages.

Prerequisites: Basic experience with any programming language, preferably Java or Scala. Basic Unix and Unix-like system experience (as a user). Basic container (Docker) experience is helpful but not required. Students should complete the self-assessment, which is not graded, to determine whether they are ready to take this course.

CSCI E-88 Section 1 (16804)

Fall 2022

Principles of Big Data Processing

Marina Yu Popova ALM, Engineer, TechTarget

The goal of this course is to learn core principles of building highly distributed, highly available systems for processing large volumes of data with historical and near real-time querying capabilities. We cover the stages of data processing that are common to most real-world systems, including high-volume, high-speed data ingestion, historical and real-time metrics aggregation, techniques to address unique counts, data de-duplication and reprocessing, storage options, distributed data indexing, and search. We review approaches to solving common challenges of such systems and get hands-on experience implementing some of them. We look at trends and the evolution of data processing and analytics with special attention to the modern data stack and the resulting advances in data warehousing, data lakes, and data mesh solutions. The focus of this course is on understanding the challenges and core principles of big data processing, not on specific frameworks or technologies used for implementation. We review a few notable technologies for each area with a deeper dive into a few select ones. The course is structured as a progression of topics covering the full, end-to-end data processing pipeline typical in real-world scenarios.

Prerequisites: Students must be comfortable with intermediate programming in at least one language, preferably Java, Python, or Scala, including basic data structures, functions, and build and dependency management tools (Maven or Gradle for Java, virtualenv for Python). Familiarity with the basic multi-threading is helpful. Most of the examples in lectures are in Java and Python. Students should be familiar with basic usage, package/software installations, and administration and troubleshooting on Unix-like systems (Linux, any flavor, MacOS), cloud environments like Amazon web services (AWS) cloud and container frameworks like Docker. Their laptops should have 64-bit operating systems and have at least eight central processing units (CPU) and 8G random-access memory (RAM). Students should complete the self-assessment assignment, available on the syllabus, to determine if they are ready to take the course. Courses such as CSCI E-7, CSCI E-10a, CSCI E-88a, and CSCI E-90, or equivalents, are also recommended.

CSCI E-88c Section 1 (16769)

Fall 2022

Programming in Scala for Big Data Systems

Edward S. Sumitra MS, Associate Director, Curriculum Associates

Scala is a strongly typed, versatile programming language that has emerged as one of the de-facto languages in big data systems. Scala supports multiple programming paradigms, including familiar object-oriented programming (OOP) and functional programming (FP) techniques. This hands-on course covers types and data structures, build tools, functional programming concepts with higher-order functions, pattern matching, concurrency, and parallel processing. Popular libraries in the Scala ecosystem are introduced and applied. Students learn unit testing libraries and reinforce techniques taught in lectures by completing weekly programming assignments. Students apply their knowledge to develop batch processing applications in Apache Spark and stream processing applications in Apache Flink in the latter part of the course.

Prerequisites: Familiarity with a programming language like Java, Python, Javascript, C#, or C++.

CSCI E-89 Section 1 (16392)

Fall 2022

Deep Learning

Zoran B. Djordjevic PhD, Senior Enterprise Architect

The ability of computerized systems to acquire vast amounts of data and display them in informative ways raises our expectations for fast, accurate identification or recognition of events or objects and for predictions about future events. Machine learning and artificial intelligence (AI) have fulfilled those needs to some degree. Over the last 10 years, a versatile architectural style of artificial neural networks called deep learning has emerged as the most promising answer to those expectations. Today, deep learning is the primary technique for analysis and resolution of many issues in data analyses and natural sciences, linguistics, and engineering. We use deep learning for image classification, manipulation and generation, speech recognition and synthesis, natural language translation, sound and music manipulation and generation, navigation of self-driving cars, and many other activities. In this course, students master several key architectures for implementation of deep learning networks, such as convolutional neural networks (CNNs), recurrent neural networks (RNNs), long short-term memory networks (LSTMs), autoencoders, generative adversarial networks (GANs), transformers with attention, and graph neural networks. We provide references to many practical applications where those architectures are successfully used. The course starts with a review of the theoretical foundations of the neural networks approach to machine learning including auto-differentiation and backpropagation. The emphasis of the course is on practical applications of deep learning using Keras (packages within TensorFlow 2.x framework) and PyTorch.

Prerequisites: Proficiency with Python. We assume no familiarity with Linux and introduce all essential Linux features and commands. Students need access to a computer with a 64-bit operating system and at least 8 GB of RAM. Having a machine with NVIDIA card is a plus but not required. All complex examples given as assignments could be run on Google Collaboratory.

CSCI E-89c Section 1 (16817)

Fall 2022

Deep Reinforcement Learning

Dmitry V. Kurochkin PhD, Senior Research Analyst, Faculty of Arts and Sciences Office for Faculty Affairs, Harvard University

This course introduces deep reinforcement learning (RL), one of the most modern techniques of machine learning. Deep RL has attracted the attention of many researchers and developers in recent years due to its wide range of applications in a variety of fields such as robotics, robotic surgery, pattern recognition, diagnosis based on medical image, treatment strategies in clinical decision making, personalized medical treatment, drug discovery, speech recognition, computer vision, and natural language processing. Deep RL can be seen as the third area of machine learning, in addition to supervised and unsupervised algorithms, in which the learning of an agent occurs as a result of its own actions and interaction with the environment. Such learning processes do not need to be guided externally, but it has been difficult until recently to use RL ideas practically. This course focuses on foundations of deep RL and applications to problems that emerge in healthcare and social science applications.

Prerequisites: Introductory probability and statistics, multivariate calculus equivalent to MATH E-21a, and proficiency in Python programming equivalent to CSCI E-7. We formulate value (cost) functions and perform optimization. Students are expected to be comfortable taking derivatives. Basic knowledge of probability theory (in particular, conditional probability distributions and conditional expectations) is necessary. Understanding matrix vector operations and notation is helpful but not required. All coding exercises are performed in Python. Students are required to take a short pretest at the beginning of the course. The pretest score does not count toward the final grade but helps you understand whether your background in calculus, probability theory, as well as command of coding positions you for success in this course.

CSCI E-90 Section 1 (15865)

Fall 2022

Cloud Services, Infrastructure, and Computing

Gregory Thomas Misicko ALM, Engineering Manager, NetApp Cloud Solutions

Off-premise/cloud services, infrastructure, and computing have replaced in-house data centers across businesses of every size. Businesses rely on cloud services because of their extremely high efficiency, ease of setup, and their ability to scale with demand. It is essential for today's engineers to understand how robust architectures can be implemented on a cloud platform, and to understand in depth which services and tools are available for them to use. This course does not require any prior experience working with cloud services and does not require any programming skills.

Prerequisites: Ability to read and write simple code in either Java or Python is a plus.

CSCI E-92 Section 1 (16808)

Fall 2022

Principles of Operating Systems

James L. Frankel PhD, Lecturer in Extension, Harvard University

This course examines the role of operating systems: process synchronization and scheduling; memory management including virtual memory, swapping, paging, and segmentation; file management; protection and security; input/output techniques, buffering, and resource allocation; deadlock detection and avoidance; system modeling; performance measurement and evaluation; and operating system case studies. An extensive lab project is required of all students.

Prerequisites: Knowledge of data structures and programming experience, such as CSCI E-22 or the equivalent. An advanced algorithms course, such as CSCI E-124 or equivalent, is preferred but not required. Students must have sufficient experience to write large programming projects in the C programming language that utilize a wide variety of data structures.

CSCI E-93 Section 1 (26397)

Spring 2023

Computer Architecture

James L. Frankel PhD, Lecturer in Extension, Harvard University

This course is a study of the fundamental concepts in the design and organization of modern computer systems. Topics include computer organization, instruction-set design, processor design, memory system design, timing issues, interrupts, microcoding, and various performance-enhancing parallel techniques such as prefetching, pipelining, branch prediction, superscalar execution, and massive-parallel processing. We also study existing architectures using CISC, RISC, vector, data parallel, and VLIW designs. An extensive lab project encompassing the design and implementation of a new instruction set and CPU using an FPGA is required of all students.

Prerequisites: Knowledge of data structures and programming experience (CSCI E-22, or the equivalent) with a Boolean/digital logic course preferred, but not required.

CSCI E-94 Section 1 (25152)

Spring 2023

Fundamentals of Cloud Computing with Microsoft Azure

Joseph Ficara ASEE, Lead Architect, The Predictive Index

This course starts by introducing the student to the fundamentals of cloud computing and serverless computing. We contrast the challenges and benefits offered by cloud computing, serverless cloud computing, and traditional self-managed cloud and on-premises solutions. We cover the fundamental architecture and design patterns necessary to build highly available and scalable solutions using key Microsoft Azure platform as a service (PaaS) and serverless offerings. This course guides students in when to use one service over another based on performance, maintainability, complexity, and cost. Key services covered include Azure Front Door, Azure Application Services, Azure Application Configuration and KeyVault, Azure SQL, Azure application programming interface (API) management, Azure Functions, Azure Logic Applications, Azure active directory (AD) for authentication, Azure storage, Azure Service Bus, Azure Cosmos DB, Azure Cognitive Search, and macro and microservices. In addition to Azure services and guidance, the course covers how to implement processes to streamline development such as continuous integration, continuous deployment (CICD) and automated testing using Azure DevOps. Coverage would not be complete without examining the fundamentals necessary to make a system ready for users, including always-up architecture and deployment strategies, rollback strategies, A/B testing, testing in production, monitoring, alerting, performance tuning, snapshot debugging in production, and system health analysis using Application Insights and Azure Monitor.

Prerequisites: Basic C#, C++, or Java development skills. CSCI E-10a or the equivalent. This course involves a substantial amount of programming in C# and .NET Core.

CSCI E-96 Section 1 (15736)

Fall 2022

Data Mining for Business

Edward Kwartler MBA, Vice President, Trusted Artificial Intelligence, DataRobot

This course introduces non-mathematical business professionals to data science principles widely used in today's corporations. Quantitative methods affect many of today's interactions for business leaders, students, and consumers. Emphasis is placed on practical uses and case studies utilizing data to inform business decisions rather than theoretical or complex mathematics. Case study topics include understanding customer demand, marketing, new market forecasting, revenue projections, and data mining to improve decisions. Learning goals include quantitative business application, basic programming, algorithm development, and process workflow. The course highlights methods that business leaders and data scientists have found to be the most useful. It introduces the basic concepts of R for data mining. This course is for students who want an introduction to how data science improves business outcomes.

Prerequisites: Since this course utilizes R throughout the semester students should complete the 4-hour free online course Introduction to R at DataCamp.com found here: https://www.datacamp.com/courses/free-introduction-to-r.

CSCI E-97 Section 1 (15356)

Fall 2022

Software Design: Principles, Models, and Patterns

Eric Gieseke ALM, Principal Software Engineer, Algorand

This course approaches object-oriented software design from three perspectives: the software engineering principles that enable development of quality software, the modeling of software components using the Unified Modeling Language (UML), and the application of design patterns as a means of reusing design models that are accepted best practices. These patterns include both the original software patterns as well as more recent modularization patterns for software construction. There is at least one significant modeling exercise and a set of programming assignments that require the application of design principles and good programming technique. Students are expected to write a detailed description of the design for each of their programs, incorporating UML models as appropriate. Students implement their programs in the Java programming language. In addition, there is at least one significant assignment that requires designing and documenting a software subsystem without implementation.

Prerequisites: CSCI E-22, or the equivalent, and proficiency in Java.

CSCI E-101 Section 1 (16602)

Fall 2022

Foundations of Data Science and Engineering

Bruce Huang EdD, PhD, Director of Master's Degree Program in Information Technology, Harvard Extension School

Most data scientists spend 20 percent of their time building data models and analyzing model results. What do they do with the remaining 80 percent of their time? The answer is data engineering. Data engineering is a subdiscipline of software engineering that focuses on the transportation, transformation, and management of data. This course takes a comprehensive approach to explore data science, which includes data engineering concepts and techniques. Key topics include data management and transformation, exploratory data analysis and visualization, statistical thinking and machine learning, natural language processing, and storytelling with data, emphasizing the integration of Python, MySQL, Tableau, development, and big data analytics platforms. Students cannot earn Harvard Extension School degree credit for CSCI E-101 if it is taken after CSCI E-29.

Prerequisites: CSCI E-7, CSCI E-50, or the equivalent.

CSCI E-101 Section 1 (26190)

Spring 2023

Foundations of Data Science and Engineering

Bruce Huang EdD, PhD, Director of Master's Degree Program in Information Technology, Harvard Extension School

Most data scientists spend 20 percent of their time building data models and analyzing model results. What do they do with the remaining 80 percent of their time? The answer is data engineering. Data engineering is a subdiscipline of software engineering that focuses on the transportation, transformation, and management of data. This course takes a comprehensive approach to explore data science, which includes data engineering concepts and techniques. Key topics include data management and transformation, exploratory data analysis and visualization, statistical thinking and machine learning, natural language processing, and storytelling with data, emphasizing the integration of Python, MySQL, Tableau, development, and big data analytics platforms. Students cannot earn Harvard Extension School degree credit for CSCI E-101 if it is taken after CSCI E-29.

Prerequisites: CSCI E-7, CSCI E-50, or the equivalent.

CSCI E-102 Section 1 (26343)

Spring 2023

Econometrics and Causal Inference with R

Dmitry V. Kurochkin PhD, Senior Research Analyst, Faculty of Arts and Sciences Office for Faculty Affairs, Harvard University

Supervised learning algorithms, such as support-vector machines, random forests, and neural networks have demonstrated phenomenal performance in the era of big data. However, they often fail in answering the question, what would happen if the world changed in some specific way while holding other variables fixed? Such problems arise in many business applications including in finance, policymaking, and healthcare. This course covers modern econometric techniques for evaluating causal effects based on observational (that is, non-experimental) data. Topics covered in the course include multivariate linear regression, heteroscedasticity and weighted least squares (WLS), dummy variables and interactions, difference in differences (DD), logistic regression, probit model, censored regression models, exact matching, propensity score matching (PSM), regression discontinuity design (RDD), fuzzy regression discontinuity (FRD), synthetic control, instrumental variables (IV), and two-stage least squares (2SLS). Students get hands-on experience using R.

Prerequisites: Multivariate calculus equivalent to MATH E-21a, introductory probability and statistics, and familiarity with linear regression. Prior programming experience, preferably in R, is helpful but not required.

CSCI E-103 Section 1 (16694)

Fall 2022

Data Engineering for Analytics to Solve Business Challenges

Eric Gieseke ALM, Principal Software Engineer, Algorand - Anindita Mahapatra ALM, Solutions Architect, Databricks

In today's world, data is generated at an ever-increasing rate. The analytic platforms need to match this pace of generated data, digest it, and generate useful insights. The best decisions are made with informed data and as it changes, one needs to follow the signals and indicators embedded in the data. The technology space is evolving rapidly and choosing the right technology fit for the data at hand is an important decision. The next decision is to select the best architecture to provide the solution for technical challenges and helps the business improve its growth, revenue, and time to market. Spark provides a swiss army knife to handle the entire data life cycle, from ingestion to consumption. Newer offerings from the open source community around Delta and MLFlow help strengthen the data platform by making it performant, reliable, and repeatable. Often, innovation is left in proof of concept stages and does not see production because of the lack of foundational architectural components necessary for hardened and mature enterprise-grade deployments. This lost innovation translates to lost revenue and missed opportunities. This course helps students to appreciate the power of technology and skillfully apply it in practical situations in the real world. It leverages the Databricks platform on Amazon web services (AWS) to simplify the cluster setup so that students can focus on the data engineering aspects of getting the data ready for analytics.

Prerequisites: Familiarity with Amazon Web Services, structured query language (SQL), and Python. Some experience with big data, Spark, and data stores is good to have.

CSCI E-104 Section 1 (26435)

Spring 2023

Advanced Deep Learning

Zoran B. Djordjevic PhD, Senior Enterprise Architect

Deep learning techniques and architectures have proliferated and are becoming increasingly specialized in dealing with practical challenges in software, science and engineering. This course makes an attempt to illustrate those trends and to make it possible for students to engage in advanced research and development activities in some of the popular areas of deep learning. Most of the lectures concentrate on the analysis of two broad groups of deep learning networks: graph neural networks (GNNs) and generative adversarial networks (GANs). For both classes of networks, we explain the fundamental mechanisms that govern their operations. We show that most of the basic classes of deep learning networks can be understood as a specialization of GNNs, where each class observes specific symmetry principles. We provide a series practical illustrations of the use of GNNs and GANs. For GNNs, we dive into the analysis of neural fingerprints of chemical molecules, proteins, and drugs. We learn to use GNNs for quantitative structure property relationships in physical systems, such as the simulations of fluid motion. For GANs, we examine in full detail the generation of realistic human images and speech, paintings and music. We learn how to impose constraints that are reflections of various physical or geometric laws governing the behavior of analyzed or generated systems. Concepts introduced in every lecture are illustrated by practical examples. Examples used in the course and homework assignments are written in Keras (TensorFlow 2.x) and PyTorch application programming interfaces (APIs).

Prerequisites: CSCI E-89 or any other introductory deep learning course. Proficiency with Python.

CSCI E-106 Section 1 (15765)

Fall 2022

Data Modeling

Hakan Gogtas PhD, Head of US Model Validation Group, Deutsche Bank

This course explores data modeling methodologies with the goal of understanding how to choose, apply, and interpret appropriate statistical designs and analyses for practical data problems. Topics covered include understanding the relationships in the data, theory and application of linear and non-linear regression models, model building steps, diagnostic of models, and remedial measures. Students can count one of the following three courses CSCI E-106, STAT E-109, or STAT E-139 (offered previously) toward a degree or certificate.

Prerequisites: Proficiency in R programming, introductory probability and statistics, multivariate calculus equivalent to MATH E-21a, and linear algebra equivalent to MATH E-21b.

CSCI E-106 Section 1 (26017)

Spring 2023

Data Modeling

Hakan Gogtas PhD, Head of US Model Validation Group, Deutsche Bank

This course explores data modeling methodologies with the goal of understanding how to choose, apply, and interpret appropriate statistical designs and analyses for practical data problems. Topics covered include understanding the relationships in the data, theory and application of linear and non-linear regression models, model building steps, diagnostic of models, and remedial measures. Students can count one of the following three courses CSCI E-106, STAT E-109, or STAT E-139 (offered previously) toward a degree or certificate.

Prerequisites: Proficiency in R programming, introductory probability and statistics, multivariate calculus equivalent to MATH E-21a, and linear algebra equivalent to MATH E-21b.

CSCI E-108 Section 1 (26492)

Spring 2023

Data Mining, Discovery, and Exploration

Stephen Elston PhD, Principal Consultant, Quantia Analytics LLC

The goal of data mining is to find and exploit valuable insights and relationships in large, complex data sets. The massive size and high complexity of data sets has transformed the practice of data mining in the twenty-first century. Data mining algorithms have advanced rapidly to address this growth in size and complexity. Applications of data mining include web search, interactions in social networks, finding relationships in large internet-of-things (IoT) sensor networks, and finding interactions between drugs. This course surveys a range of algorithms used for key applications of data mining. The emphasis of the course is on unsupervised learning, semi-supervised learning, and graph algorithms. Scaling and computational efficiency of data mining algorithms is addressed. Lectures and readings introduce core theoretical concepts. Students apply the theory and methods using Python tools in hands-on exercises and projects. For the hands-on component of the course, students use a variety of libraries in the Python language. Examples include Scikit-Learn, Surprise, Neo4J, and NetworkX. Students may not take both CSCI E-96 and CSCI E-108 for degree or certificate credit.

Prerequisites: Students enrolling in this course are expected to have some background in Python programming equivalent to CSCI E-7 or CSCI E-50 and statistical modeling equivalent to CSCI E-63c, CSCI E-101, CSCI E-106, or STAT E-109. Knowledge of basic linear algebra, equivalent to MATH E-21a, is essential.

CSCI E-109b Section 1 (26501)

Spring 2023

Advanced Topics in Data Science

Mark Glickman PhD, Senior Lecturer on Statistics, Harvard University - Pavlos Protopapas PhD, Scientific Program Director and Lecturer, Institute for Applied Computational Science, Harvard University

Building upon the material in CSCI E-109a, the course introduces advanced methods for statistical modeling, representation, and prediction. Topics include multiple deep learning architectures such as convolutional neural networks (CNNs), recurrent neural networks (RNNs), transformers, language models, autoencoders, and generative models, as well as basic Bayesian methods and unsupervised learning. Students are strongly encouraged to enroll in both the fall and spring course within the same academic year. Students who have previously completed CSCI E-107 or CSCI E-109 may not take CSCI E-109a or CSCI E-109b for degree or certificate credit.

Prerequisites: A grade of B- or higher in CSCI E-109a. Students who have not completed CSCI E-109a should contact the instructors before registering.

CSCI E-109a Section 1 (16877)

Fall 2022

Introduction to Data Science

Pavlos Protopapas PhD, Scientific Program Director and Lecturer, Institute for Applied Computational Science, Harvard University - Natesh S. Pillai PhD, Professor of Statistics, Harvard University

This course focuses on the analysis of messy, real life data to perform predictions using statistical and machine learning methods. Material covered integrates the five key facets of an investigation using data: data collection data wrangling, cleaning, and sampling to get a suitable data set; data management accessing data quickly and reliably; exploratory data analysis generating hypotheses and building intuition; prediction or statistical learning; and communication summarizing results through visualization, stories, and interpretable summaries. Students who have previously completed CSCI E-107 or CSCI E-109 (both offered previously) may not count CSCI E-109a or CSCI E-109b toward a degree or certificate.

Prerequisites: Programming knowledge at the level of CSCI E-50 or above, statistics knowledge at the level of STAT E-100 or above, and calculus (MATH E-15 or the equivalent) required. It is recommended that students have received a grade of B+ or better in these courses before enrolling in CSCI E-109a. Introductory probability is recommended.

CSCI E-114 Section 1 (26437)

Spring 2023

Web Application Development with Jamstack

David P. Heitmeyer AM, Director of Academic Platforms and Development, Harvard University Information Technology - Arthur J. Barrett BSc, Senior Technical Architect, Harvard University Information Technology - Laurence P. Bouthillier MS, Executive Director, University of British Columbia Extended Learning - Michael D. Hilborn MS, Director, Platform Engineering and Operations, Harvard Business School Online

This course provides an introduction to web application development through the Jamstack (Javascript, application programming interfaces [APIs], and Markup) approach. Jamstack is a development architecture for modern website and application development that is increasingly popular due to performance, reliability, scalability, and security advantages. This course focuses on learning and implementing key aspects of the Jamstack approach, including pre-built HTML markup created with static site generators, client-side JavaScript, the use of APIs for back-end data and content, and automated deployment workflows. While specific frameworks and services are used in project work, the course examines how they align with Jamstack architecture principles and how they relate to alternative tools in the Jamstack landscape.

Prerequisites: Knowledge of HTML, CSS, and JavaScript to the level of CSCI E-12 is required, and knowledge of Javascript to the level of CSCI E-3 is preferred. Comfort working from the command line to install tools and packages, including troubleshooting.

CSCI E-116 Section 1 (16856)

Fall 2022

Dynamic Modeling and Forecasting in Big Data

William Yu PhD, Economist, Anderson Forecast, University of California, Los Angeles, Anderson School of Management

Most machine learning models focus on cross-sectional data, while most time-series models focus on time series with few variables and low-frequency data. This course covers the skills and models to handle big data that are both rich in variables and time. We discuss both structural models and reduced-form models. Students learn dynamic regression model, dynamic factor model, vector autoregressions model, error correction model, dimensional reduction tools for fat dataset, and state-space model. Students also learn advanced methods to decompose trend, cycle, and seasonality in high-frequency data and to make more reliable time series forecasting.

Prerequisites: One programming course in any programming language. An introductory machine learning course, such as linear regression or machine learning in general.

CSCI E-116 Section 1 (26469)

Spring 2023

Dynamic Modeling and Forecasting in Big Data

William Yu PhD, Economist, Anderson Forecast, University of California, Los Angeles, Anderson School of Management

Most machine learning models focus on cross-sectional data, while most time-series models focus on time series with few variables and low-frequency data. This course covers the skills and models to handle big data that are both rich in variables and time. We discuss both structural models and reduced-form models. Students learn dynamic regression model, dynamic factor model, vector autoregressions model, error correction model, dimensional reduction tools for fat dataset, and state-space model. Students also learn advanced methods to decompose trend, cycle, and seasonality in high-frequency data and to make more reliable time series forecasting.

Prerequisites: One programming course in any programming language. An introductory machine learning course, such as linear regression or machine learning in general.

CSCI E-117 Section 1 (26436)

Spring 2023

Secure Applications: Managing the Deployment Infrastructure

Heather Hinton PhD, Chief Information Security Officer, RingCentral

You have designed your product based on security use cases and data protection requirements, built your product using a secure development lifecycle methodology, and have pushed it to production. Now you have to keep it secure, with secure operations to continually test and maintain a secure environment for your product. In this course, we start with a pre-defined product or application architecture and add security tools and discipline to maintain a secure environment, including firewalls, intrusion detection, anti-malware, and anomalous behavior detection.

Prerequisites: CSCI E-149a or an equivalent software engineering course.

CSCI E-121 Section 1 (14302)

Fall 2022

Introduction to Theoretical Computer Science

Boaz Barak PhD, Gordon McKay Professor of Computer Science, Harvard University

Computation occurs over a variety of substrates including silicon, neurons, DNA, the stock market, bee colonies, and many others. In this course we study the fundamental capabilities and limitations of computation, including the phenomenon of universality and the duality of code and data. We touch upon the following questions: Are there functions that cannot be computed? Are there true mathematical statements that can't be proven? Are there encryption schemes that can't be broken? Is randomness ever useful for computing? Can we use the quirks of quantum mechanics to speed up computation?

Prerequisites: CSCI E-20 or the equivalent.

CSCI E-124 Section 1 (21462)

Spring 2023

Data Structures and Algorithms

Adam Hesterberg PhD, Lecturer on Computer Science, John A. Paulson School of Engineering and Applied Sciences, Harvard University - Madhu Sudan PhD, Gordon McKay Professor of Computer Science, John A. Paulson School of Engineering and Applied Sciences, Harvard University

This is a rigorous course on the design and analysis of efficient algorithms and their associated data structures. Algorithm design methods, graph algorithms, approximation algorithms, and randomized algorithms are covered.

Prerequisites: CSCI E-22 or the equivalent, and some knowledge of discrete mathematics (CSCI E-20 or the equivalent).

CSCI E-125 Section 1 (16836)

Fall 2022

Crypto and Blockchain: Understanding the Technology and the Challenges It Presents

Daniel Garrie JD, Founder and Managing Director, Law and Forensics, LLC - David Cass MBA, Vice President, Cyber and IT Risk, Supervision Group, Federal Reserve Bank of New York

This course aims to unpack the hype behind the cryptocurrency craze and give students the facts through the eyes of leading regulators, technologists, lawyers, and experts. Students learn what blockchains and cryptocurrencies are, how they can be used, and where the future of this technology is headed. The course covers multiple areas, including the basics of blockchain technology and how it works; how to create, transact, and store cryptocurrencies; regulatory and legal challenges that come with the adoption of a digital currency; surveys of how different regulatory agencies define securities in the US; and technical pieces that are underpinning secure software, system interactions with cryptocurrencies, and distributed consensus for reliability.

CSCI E-142 Section 1 (16682)

Fall 2022

Foundations of Technology Risk Management and Assessment

David Cass MBA, Vice President, Cyber and IT Risk, Supervision Group, Federal Reserve Bank of New York

Technology risk refers to any risk of financial loss, disruption, or damage to the reputation of an organization as a result of the failure of its information technology (IT) systems. This course covers the foundations of technology risk management, IT risk identification, IT risk assessment, risk mitigation, and risk and control monitoring and reporting.

CSCI E-145 Section 1 (26496)

Spring 2023

Networking at Scale

Minlan Yu PhD, Gordon McKay Professor of Computer Science, Harvard University

Modern networks have grown to extremely large scale, connecting millions of servers, and high speed, with terabits per second, to meet the needs of a variety of cloud applications in business and society (for example, social media, public health, and entertainment). In this course, we study not only basic concepts in networking but also how these concepts are applied and extended for networking at scale. We discuss the recent technology trends and design choices of performance, scalability, manageability, and cost faced by companies who own large-scale networks such as Amazon, Google, Microsoft, and Facebook. This course includes lectures and system programming projects.

Prerequisites: System programming at the level of CSCI E-61.

CSCI E-149a Section 1 (16691)

Fall 2022

Software Applications: Security Lifecycle Threats

Heather Hinton PhD, Chief Information Security Officer, RingCentral

Ever wonder how to apply threat-based thinking to a user- and usability-centered application lifecycle throughout the entire lifecycle? In this course students learn about the cradle to grave lifecycle of software applications and how to review for security implications at each stage. Starting from a product pitch, we walk through the entire product lifecycle, including design, prototyping, testing, deployment, and ongoing management including operational concerns, through to eventual decommission. We look at scenarios drawn from in the market products and development realities.

Prerequisites: Basic computer programming skills, such as CSCI E-50 or the equivalent.

CSCI E-171 Section 1 (16477)

Fall 2022

Visualization

Hanspeter Pfister PhD, An Wang Professor of Computer Science, Harvard University

The amount and complexity of information produced in science, engineering, business, and everyday human activity is increasing at staggering rates. The goal of this course is to expose students to visual representation methods and techniques that increase the understanding of complex data. Good visualizations not only present a visual interpretation of data, but do so by improving comprehension, communication, and decision making. In this course, students learn how the human visual system processes and perceives images, good design practices for visualization, tools for visualization of data from a variety of fields, and programming of interactive web-based visualizations using D3.

Prerequisites: Students are expected to have programming experience (for example, CSCI E-50) and ideally some experience with web development.

CSCI E-210 Section 1 (16780)

Fall 2022

Algorithms at the End of the Wire

Michael Mitzenmacher PhD, Thomas J. Watson, Sr. Professor of Computer Science, Harvard University

This is an advanced, rigorous course on recent research related to algorithms and data structures focusing on networks, data transmission, data storage, and data communication. Topics may run the breadth from the science that led to the founding of Google, data and video compression tools, coding, and data stream algorithms for network telemetry.

Prerequisites: CSCI E-124, or the equivalent, is very helpful.

CSCI E-265 Section 1 (26522)

Spring 2023

Big Data Systems

Stratos Idreos PhD, Associate Professor of Computer Science, Harvard University

Big data is everywhere. A fundamental goal across modern business and science is to be able to utilize as many machines as possible, to consume as much information as possible and as fast as possible. The big challenge is how to turn data into useful knowledge. This is a moving target as both the underlying hardware and our ability to collect data evolve. In this course, we discuss how to design data systems, data structures, and algorithms for key data-driven areas, including relational systems, distributed systems, graph systems, noSQL, newSQL, machine learning, and neural networks. We see how they all rely on the same set of very basic concepts, and we learn how to synthesize efficient solutions for any problem across these areas using those basic concepts.

Prerequisites: CSCI E-61, and CSCI E-66 or CSCI E-165, or the equivalent.

CSCI E-300 Section 1 (26359)

Spring 2023

Randomized Algorithms and Probabilistic Analysis

Michael Mitzenmacher PhD, Thomas J. Watson, Sr. Professor of Computer Science, Harvard University

This advanced course focuses on randomized algorithms and probabilistic analysis of algorithms. Topics include Chernoff Bounds, Markov Chains, the probabilistic method, and hashing.

Prerequisites: CSCI E-20, CSCI E-22, or CSCI E-124, and basic probability.

CSCI E-597 Section 1 (25390)

January 2023

Data Science Precapstone

Bruce Huang EdD, PhD, Director of Master's Degree Program in Information Technology, Harvard Extension School - Stephen Elston PhD, Principal Consultant, Quantia Analytics LLC

This intensive January session course helps students develop an academically strong capstone proposal. It is mandatory for candidates in the Master of Liberal Arts, data science, who wish to register for CSCI E-599a in the spring. It prepares students to explore interdisciplinary research topics from a variety of industries and areas. Through workshops and collaborating with experts from different disciplines, students identify research topics, apply the appropriate data science methods, and use data to advance innovative solutions. Students receive guidance and advising to work effectively in teams, refine project proposals, and build the domain knowledge necessary in their selected area. By the end of the course, each team submits a detailed research proposal, including project rationale, methods, and expected outcomes, which they intend to execute during CSCI E-599a.

Prerequisites: Registration is limited to officially admitted candidates in Master of Liberal Arts, data science, who are in their penultimate semester. Prospective candidates and students with pending admission applications are not eligible. Candidates must be in good academic standing and in the process of successfully completing all degree requirements except the capstone, CSCI E-599a, which they must enroll in the upcoming spring term as their final course. Candidates who do not meet these degree requirements are dropped from the course.

CSCI E-599a Section 1 (25391)

Spring 2023

Data Science Capstone

Bruce Huang EdD, PhD, Director of Master's Degree Program in Information Technology, Harvard Extension School - Stephen Elston PhD, Principal Consultant, Quantia Analytics LLC

This course is the culmination of the Master of Liberal Arts, data science where students execute their research proposal from CSCI E-597. It gives students the opportunity to collaborate with industry, government, or academic partners to investigate a real-world research topic using their data science skills. At the completion of the capstone, students are able to demonstrate their ability to think critically about data, communicate with diverse audiences, and advance innovation in ways that benefit society.

Prerequisites: Registration is limited to officially admitted capstone track candidates in the Master of Liberal Arts, data science. Candidates must be in good academic standing, ready to graduate in May with only the capstone left to complete (no other course registration is allowed simultaneously with the capstone), and have successfully completed the precapstone course, CSCI E-597, in the previous January term. Candidates who do not meet these requirements are dropped from the course.

CSCI E-599a Section 1 (16091)

Fall 2022

Data Science Capstone

Bruce Huang EdD, PhD, Director of Master's Degree Program in Information Technology, Harvard Extension School

This course is the culmination of the Master of Liberal Arts, data science, where students execute their research proposal from CSCI S-597. It gives students the opportunity to collaborate on a complex research topic using their data science skills. At the completion of the capstone, students are able to demonstrate their ability to think critically about data, communicate with diverse audiences, and advance innovation in ways that benefit society.

Prerequisites: Registration is limited to officially admitted capstone track candidates in the Master of Liberal Arts, data science. Candidates must be in good academic standing, ready to graduate in March with only the capstone left to complete (no other course registration is allowed simultaneously with the capstone), and have successfully completed the Harvard Summer School precapstone course, CSCI S-597, in the previous summer term. Candidates who do not meet these requirements are dropped from the course.

CSCI E-599 Section 1 (25901)

Spring 2023

Software Engineering Capstone

Eric Gieseke ALM, Principal Software Engineer, Algorand

This course examines how current software engineering methods approach structuring and managing software projects, from requirements gathering to production release. Formal methods in software engineering have a long history, from the older waterfall method to the current agile methods. Students collaborate in teams to define an architectural model and a project plan, and then implement a system while practicing techniques in software engineering. They present to the Extension School's Master of Liberal Arts, software engineering faculty committee based on the course project. The programming is primarily in Java but may include other languages.

Prerequisites: Registration is limited to officially admitted candidates in the Master of Liberal Arts, software engineering, capstone track. Prospective candidates and students with pending admission applications are not eligible. Candidates must be in good academic standing, have completed nine courses in the concentration including the software design requirement, and have proficiency in Java. Candidates who do not meet these degree requirements are dropped from the course.

CSCI E-599 Section 2 (24531)

Spring 2023

Software Engineering Capstone

Peter Vaughan Henstock PhD, Machine Learning and Artificial Intelligence Lead, Pfizer, Inc.

This course examines how current software engineering methods approach structuring and managing software projects, from requirements gathering to production release. Formal methods in software engineering have a long history, from the older waterfall method to the current agile methods. Students collaborate in small teams to define an architectural model and a project plan, and then implement a system while practicing techniques in software engineering. They present to the Extension School's Master of Liberal Arts, software engineering faculty committee based on the course project.

Prerequisites: Registration is limited to officially admitted candidates in the Master of Liberal Arts, software engineering, capstone track. Prospective candidates and students with pending admission applications are not eligible. Candidates must be in good academic standing, have completed nine courses in the concentration including the software design requirement, and have proficiency in programming. Candidates who do not meet these degree requirements are dropped from the course.