Skip to Content

Computer Science

On-campus and online computer science courses at Harvard Extension School cover programming, web development, software engineering, theory, and more. We also have a Information Technology Graduate Program and a Web Technologies Certificate, both involving IT courses.

Courselist

  • CSCI E-1 Understanding Computers and the Internet (Fall)
  • CSCI E-7 Exposing Digital Photography (Fall)
  • CSCI E-9 Creative Explorations in Screen-Based and Physical Computing (Spring)
  • CSCI E-12 Fundamentals of Website Development (Spring)
  • CSCI E-14 Understanding and Developing Multimedia (Fall)
  • CSCI E-19 Video Field Production (Fall)
  • CSCI E-21 Introduction to 3-D Modeling and Animation Using Maya 2011 (Fall)
  • CSCI E-24 Video Editing and Digital Design (Spring)
  • CSCI E-30 Introduction to Web Content Management Systems Site Development (Fall)
  • CSCI E-50a Introduction to Computer Science Using Java I (Fall)
  • CSCI E-50b Introduction to Computer Science Using Java II (Spring)
  • CSCI E-52 Intensive Introduction to Computer Science (Fall)
  • CSCI E-61 Systems Programming and Machine Organization (Fall)
  • CSCI E-64 Visualization (Spring)
  • CSCI E-75 Building Dynamic Websites (Spring)
  • CSCI E-76 Building Mobile Applications (Spring)
  • CSCI E-77 Mobile Software Engineering (Spring)
  • CSCI E-113 Introduction to C, Unix/Linux Programming, and Web Interfaces (Fall)
  • CSCI E-119 Data Structures (Fall)
  • CSCI E-120 Discrete Mathematics for Computer Science (Spring)
  • CSCI E-124 Algorithms and Data Structures (Spring)
  • CSCI E-131b Communication Protocols and Internet Architectures (Fall, Spring)
  • CSCI E-139 Internet Voice, Video, and Telepresence (Spring)
  • CSCI E-147 Medical Informatics (Spring)
  • CSCI E-153 Web Development Using XML (Fall)
  • CSCI E-160 Java for Distributed Computing (Fall, Spring)
  • CSCI E-170 Security, Privacy, and Usability (Spring)
  • CSCI E-175 Cloud Computing and Software as a Service (Fall)
  • CSCI E-186 Economics and Computation (Fall)
  • CSCI E-190 Bioinformatics Algorithms (Spring)
  • CSCI E-205 Computing Foundations for Computational Science (Fall)
  • CSCI E-207 Introduction to Formal Systems and Computation (Fall)
  • CSCI E-215 Unix/Linux Systems Programming (Spring)
  • CSCI E-220 Artificial Intelligence (Fall)
  • CSCI E-234 Introduction to Computer Graphics (Fall)
  • CSCI E-237 Programming Microsoft .NET (Fall)
  • CSCI E-241 Web Development Using ASP.NET MVC (Spring)
  • CSCI E-247/W Software Design: Principles, Models, and Patterns (Fall)
  • CSCI E-250 Abstraction and Design in Computation (Spring)
  • CSCI E-253 Developing Web-Based Database Applications (Fall)
  • CSCI E-256 Oracle Database Administration (Spring)
  • CSCI E-268 Database and Information Management Systems (Spring)
  • CSCI E-272 System z and Enterprise Computing (Spring)
  • CSCI E-275 Software Engineering (Spring)
  • CSCI E-287 Computer Architecture (Fall)
  • CSCI E-295 Compiler Design and Implementation (Spring)
  • CSCI E-300 Randomized Analysis (Fall)
CSCI E-1 Understanding Computers and the Internet
Fall term (13782)
David J. Malan, PhD, Senior Lecturer on Computer Science, Harvard University.
Daniel Armendariz, SB, Operations Engineer, Meebo.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
Online only, beginning Aug. 29. Optional sections to be arranged. Lecture 1 video.
This course is all about understanding: understanding what's going on inside your computer when you flip on the switch, why tech support has you constantly rebooting your computer, how everything you do on the Internet can be watched by others, and how your computer can become infected with a worm just by being turned on. Designed for students who use computers and the Internet every day but don't fully understand how it all works, this course fills in the gaps. Through lectures on hardware, software, the Internet, multimedia, security, privacy, website development, programming, and more, this course "takes the hood off" of computers and the Internet so that students understand how it all works and why. Through discussions of current events, students are exposed also to the latest technologies. The recorded lectures are from the 2011 course. (4 credits)
CSCI E-7 Exposing Digital Photography
Fall term (13395)
Daniel Armendariz, SB, Operations Engineer, Meebo.
Mondays beginning Aug. 29, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,900, undergraduate credit $1,900, graduate credit $1,900.
Photography has exploded in recent years as digital cameras have become affordable and easier to use. There are many courses that teach students the artistic aspect of "how to become a better photographer" or "how to improve your eye," but this is not one of them. Instead, students—from one-time users to professionals—become better photographers through an understanding of the technical aspects and terms of a digital camera. Learn why photos look blurry at night, why color management is important, what the difference between sports mode and portrait mode on the camera's dial is, and how to manipulate the camera without the need of these modes in the first place. Topics include exposure and metering, flash, dynamic range, CMOS and CCD sensors, color filter arrays, RAW versus JPEG formats, color spaces and profiles, editing photos with Photoshop, and optical and computational artifacts. Through lectures and hands-on assignments, students understand the jargon and compromises of digital photography that ultimately expose the workings of digital cameras. You are not required to own a digital camera, but if you do, one with a manual mode and an option for RAW is recommended. (4 credits)
CSCI E-9 Creative Explorations in Screen-Based and Physical Computing
Spring term (22834)
Bakhtiar Mikhak, PhD, Co-Founder, Media Modifications, Ltd.
Erik Blankinship, PhD, Co-Founder, Media Modifications, Ltd.
Thursdays beginning Jan. 26, 5:30-7:30 pm. Required sections Thursdays, 7:35-9:35 pm.
Course tuition: noncredit $1,900, undergraduate credit $1,900, graduate credit $1,900.
Limited enrollment.
This course offers an introduction to the fundamentals of computing and programming through prototyping, exhibiting, and critiquing interactive visualizations and physical creations that participants design, build, and refine. Through weekly projects students gain extensive experience with the Processing program language and its various extensions for incorporating rich data sets available on the web, and the Arduino development kits for an introduction to prototyping interactive physical systems. The Processing section of the course serves as conceptual and practical preparation for learning programming languages such as Java and ActionScript. The Arduino section of the course introduces electronics and programming microcontrollers for prototyping interactive physical systems incorporating rich sensors and actuators. The physical computing section of the course also covers combining Arduino and Processing sketches to build more sophisticated projects. Prerequisite: general experience with Macintosh or Windows systems. (4 credits)
CSCI E-12 Fundamentals of Website Development
Spring term (21144)
David P. Heitmeyer, AM, Senior Software Product Architect/Engineer, iCommons, Office of the CIO, Harvard University.
Wednesdays beginning Jan. 25, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
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 XHTML, 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 (XHTML, 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. Prerequisite: CSCI E-1, or the equivalent experience. (4 credits)
CSCI E-14 Understanding and Developing Multimedia
Fall term, Section 1 (13535)
Rob Graham, BS, Chief Creative Technologist, Trainingcraft.
Tuesdays beginning Aug. 30, 7:35-9:35 pm.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
Fall term, Section 2 (13653)
Rob Graham, BS, Chief Creative Technologist, Trainingcraft.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
Online only, beginning Aug. 30.
This course provides students with a hands-on exploration of the world of dynamic media production through the creation of interactive software programs that combine media elements like graphics, audio, video, and interactivity; and focuses on designing and planning projects with the needs and expectations of end users in mind. Through an exploration of Adobe Flash CS5 Professional, students learn how to design, plan, and create interactive programs designed to entertain, educate, and inform others. This course also includes exploration of graphic interface design and development, audio and video editing tools, and an overview of the ActionScript 3.0, the Flash scripting language. Prerequisites: proficiency with either Macintosh or Windows operating systems and the ability to understand and use basic drawing and media development applications. (4 credits)
CSCI E-19 Video Field Production
Fall term (12816)
Allyson Sherlock, MA, Instructor in Professional Studies, Emerson College.
Saturdays beginning Sept. 10, 11 am-3 pm.
Course tuition: noncredit $1,900, undergraduate credit $1,900, graduate credit $1,900.
Limited enrollment.
Through lectures and hands-on projects, students learn the equipment and techniques used in single-camera video production. Students write and produce a variety of projects that they see through from preproduction to postproduction. Final Cut Pro is used to edit student projects and DVD Studio Pro is used to create basic DVD menus. Prerequisite: experience with Macintosh computers. (4 credits)
CSCI E-21 Introduction to 3-D Modeling and Animation Using Maya 2011
Fall term (12982)
Joshua Hoaglund, BFA, Staff Animator, Rockstar Games.
Wednesdays beginning Aug. 31, 5:30-7:30 pm. Required sections Wednesdays, 7:35-8:35 pm.
Course tuition: noncredit $1,900, undergraduate credit $1,900, graduate credit $1,900.
Limited enrollment.
This course is an introduction to Maya 2011. Maya is an industry standard 3-dimensional (3-D) software used to create animated films, video games, medical visualizations, and special effects for films. The objective of the course is to familiarize students with the fundamentals of a 3-D working environment using Maya 2011. The course develops skills in four elementary 3-D software topics: interface, objects, hierarchy, and animation. These four topics translate into most 3-D software packages and provide a foundation for using 3-D software. Topics include Maya interface, modeling, 3-D animation, textures, lighting, and rendering. Prerequisite: familiarity with Adobe Photoshop, Mac OS X. (4 credits)
CSCI E-24 Video Editing and Digital Design
Spring term (22659)
Allyson Sherlock, MA, Instructor in Professional Studies, Emerson College.
Saturdays beginning Feb. 4, 11 am-3 pm.
Course tuition: noncredit $1,900, undergraduate credit $1,900, graduate credit $1,900.
Limited enrollment.
This course serves as an introduction to the art of video post-production. We explore the theory and practice of various editing styles. Through demonstrations and hands-on experience, students learn advanced editing techniques with an in-depth examination of Final Cut Pro. To further enhance projects, students create basic 2-D graphics and interactive DVD menus using Motion and DVD Studio Pro. Strong emphasis is placed on post-production techniques that improve the quality of student projects. Footage is provided for class exercises as students learn the various software programs. Prerequisite: previous Final Cut Pro experience. (4 credits)
CSCI E-30 Introduction to Web Content Management Systems Site Development
Fall term, Section 1 (13536)
Rob Graham, BS, Chief Creative Technologist, Trainingcraft.
Tuesdays beginning Aug. 30, 5:30-7:30 pm.
Course tuition: noncredit $1,950, graduate credit $1,950.
Fall term, Section 2 (13537)
Rob Graham, BS, Chief Creative Technologist, Trainingcraft.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Aug. 30.
In a rapidly changing world, the need for online publishers to keep up with the needs and expectations of their site visitors is paramount. Today, many web publishers use content management systems (CMS) to allow them to instantly and dynamically update web pages and properties as new content becomes available so that every visit to a site is engaging, informative, and meaningful. This course explores the use of open source web-based content management systems such as SocialGo, CSS, Wordpress, Wix, Joomla, and others to create dynamic and flexible websites and landing pages. Participants explore the fundamentals of planning dynamic websites, CMS database management, developing CSS-controlled site templates, and creating database driven websites through the planning and creation of their own topic-based sites. Prerequisite: CSCI-E-12, or the equivalent experience. (4 credits)
CSCI E-50a Introduction to Computer Science Using Java I
Fall term (10701)
Henry H. Leitner, PhD, Senior Lecturer on Computer Science, Harvard University.
Mondays beginning Aug. 29, 5:30-7:30 pm. Required sections to be arranged.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
Intended for students with no previous programming background, this course introduces problem-solving methods and algorithm development using the high-level programming language Java. Students learn how to design, code, debug, and document programs using modern engineering techniques in the Unix 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. (4 credits)
CSCI E-50b Introduction to Computer Science Using Java II
Spring term (20659)
Henry H. Leitner, PhD, Senior Lecturer on Computer Science, Harvard University.
Mondays beginning Jan. 23, 5:30-7:30 pm. Required sections to be arranged.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
This is the second course in object-oriented programming methods using Java. It begins with the implementation of abstract data types using classes, objects, and overloaded methods. Other topics include strings, multidimensional arrays, 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 also introduces the RISC machine architecture and aspects of compilers and operating systems. Programming exercises are conducted in both Unix and PC-based environments. Prerequisite: CSCI E-50a, or the equivalent experience in a high-level programming language such as C, C++, or Java. (4 credits)
CSCI E-52 Intensive Introduction to Computer Science
Fall term (13026)
David J. Malan, PhD, Senior Lecturer on Computer Science, Harvard University.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
Online only, beginning Sept. 1. Optional sections to be arranged. Lecture 1 video.
This course is an 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, encapsulation, data structures, databases, memory management, security, software development, virtualization, and websites. Languages include C, PHP, and JavaScript plus SQL, CSS, and HTML. Problem sets are inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Students can only count two of the following three courses—CSCI E-50a, CSCI E-50b, and CSCI E-52—toward a degree. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 50. Prerequisite: prior programming experience in any language recommended. (4 credits)
CSCI E-61 Systems Programming and Machine Organization
Fall term (13836)
Stephen Chong, PhD, Assistant Professor of Computer Science, Harvard University.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
Online only, beginning Sept. 2. Limited enrollment. Lecture 1 video.
This course covers the fundamentals of computer systems programming, machine organization, and performance tuning. It provides a solid background in systems programming and a deep understanding of low-level machine organization and design. Topics include C and assembly language programming, program optimization, memory hierarchy and caching, virtual memory and dynamic memory management, concurrency, threads, and synchronization. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 61. Prerequisite: CSCI E-52 , CSCI E-113, or some experience programming in C. (4 credits)
CSCI E-64 Visualization
Spring term (22872)
Hanspeter Pfister, PhD, Gordon McKay Professor of the Practice of Computer Science, Harvard University.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
Online only, beginning Jan. 25. Optional sections Fridays, 1-2:30 pm. Lecture 1 video.
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 facilitate the understanding of complex data. Good visualizations not only present a visual interpretation of data, but improve comprehension, communication, and decision making. The course covers how the human visual system processes and perceives images, good design practices for visualization, tools for visualization of data from a variety of fields, collecting data from web sites with Python, and programming interactive visualization applications using Processing. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 171. Prerequisite: programming experience, or permission of the instructor. (4 credits)
CSCI E-75 Building Dynamic Websites
Spring term (23640)
*** CSCI E-75 Spring term (23640) has been CANCELED. ***
Today's websites are increasingly dynamic. Pages are no longer static HTML files but instead generated by scripts and database calls. User interfaces are more seamless, with technologies like Ajax replacing traditional page reloads. This course teaches students how to build dynamic websites with Ajax and with Linux, Apache, MySQL, and PHP (LAMP), one of today's most popular frameworks. Students learn how to set up domain names with DNS, how to structure pages with XHTML and CSS, how to program in JavaScript and PHP, how to configure Apache and MySQL, how to design and query databases with SQL, how to use Ajax with both XML and JSON, and how to build mashups. The course explores issues of security, scalability, and cross-browser support and also discusses enterprise-level deployments of websites, including third-party hosting, virtualization, colocation in data centers, firewalling, and load-balancing. The recorded lectures are from the 2010 course. Prerequisites: prior programming experience (in any language) and familiarity with HTML are assumed. (4 credits)
CSCI E-76 Building Mobile Applications
Spring term (23497)
David J. Malan, PhD, Senior Lecturer on Computer Science, Harvard University.
Daniel Armendariz, SB, Operations Engineer, Meebo.
Mondays beginning Jan. 23, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
Today's applications are increasingly mobile. Computers are no longer confined to desks and laps but instead live in our pockets and hands. This course teaches students how to build mobile apps for Android and iOS, two of today's most popular platforms, and how to deploy them in Android Market and the App Store. Students learn to write native apps for Android using Eclipse and the Android SDK, to write native apps for iPhones, iPod Touches, and iPads using Xcode and the iOS SDK, and to write web apps for both platforms. Prerequisites: CSCI E-52, or the equivalent. Distance students must have access to an Intel-based Mac running Lion (Mac OS X 10.7 or later). Local students will have access to Macs on campus as needed. (4 credits)
CSCI E-77 Mobile Software Engineering
Spring term (23704)
*** CSCI E-77 Spring term (23704) has been CANCELED. ***
This course is an introduction to principles of software engineering for mobile devices and best practices, including code reviews, source control, and unit tests. Topics include Ajax, encapsulation, event handling, HTTP, memory management, MVC, object-oriented design, and user experience. Languages include HTML 5, JavaScript, and Objective-C. Projects include mobile web apps and native iOS apps. Students should have a Mac (running Lion) as well as an iPad, iPhone, or iPod Touch. Local students have access to Macs in labs on the Harvard campus. Students work on projects in pairs; students are encouraged to enroll with a friend. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 164. Prerequisite: CSCI E-52 or CSCI E-76, or prior programming experience with C, C++, or Objective-C. (4 credits)
CSCI E-113 Introduction to C, Unix/Linux Programming, and Web Interfaces
Fall term (10033)
Bruce Molay, AB, Lecturer in Extension, Harvard University.
Wednesdays beginning Aug. 31, 7:35-9:35 pm. Optional sections to be arranged.
Course tuition: noncredit $1,900, undergraduate credit $1,900, graduate credit $1,900.
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, or Pascal; a data structures course such as CSCI E-119. (4 credits)
CSCI E-119 Data Structures
Fall term (13298)
David G. Sullivan, PhD, Lecturer on Computer Science, Boston University.
Wednesdays beginning Aug. 31, 7:35-9:35 pm. Required sections to be arranged.
Course tuition: noncredit $1,950, undergraduate credit $1,950, graduate credit $1,950.
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. Prerequisite: a good working knowledge of Java (CSCI E-50b, or the equivalent). (4 credits)
CSCI E-120 Discrete Mathematics for Computer Science
Spring term (23582)
Harry R. Lewis, PhD, Gordon McKay Professor of Computer Science, Harvard University.
Tuesdays, beginning Jan. 24, 9-10 pm, and Thursdays, 9-11 pm.
Course tuition: noncredit $1,950, graduate credit $1,950.
Course taught via live web conference. Limited enrollment. Lecture 1 video.
This course covers widely applicable mathematical tools for computer science, including topics from logic, set theory, combinatorics, number theory, probability theory, and graph theory. It includes practice in reasoning formally and proving theorems. Students meet twice a week via web conference to solve problems collaboratively. They also watch recorded lectures from the Harvard School of Engineering and Applied Sciences course Computer Science 20. Prerequisite: MATH E-15, or the equivalent. (4 credits)
CSCI E-124 Algorithms and Data Structures
Spring term (21462)
Michael Mitzenmacher, PhD, Gordon McKay Professor of Computer Science, Harvard University.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Jan. 25. Optional sections to be arranged. Lecture 1 video.
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. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 124. Prerequisites: CSCI E-119, or the equivalent and sound knowledge of discrete mathematics (CSCI E-120, or the equivalent). (4 credits)
CSCI E-131b Communication Protocols and Internet Architectures
Fall term (11353)
Leonard Evenchik, SM, Lecturer in Extension, Harvard University.
Mondays beginning Aug. 29, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
Spring term (21387)
Leonard Evenchik, SM, Lecturer in Extension, Harvard University.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Jan. 23. Optional sections to be arranged. Lecture 1 video.
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, multimedia protocols for voice and video, 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, internetworking using switches and routers, and the design and analysis of both private networks and the Internet are presented. The course discusses new areas of work, including network quality of service, voice and video on the Internet, policy-based networks, and broadband/gigabit networks. Prerequisites: programming or computer architecture experience; a basic understanding of the principles of communication protocols. (4 credits)
CSCI E-139 Internet Voice, Video, and Telepresence
Spring term (23501)
Leonard Evenchik, SM, Lecturer in Extension, Harvard University.
Mondays beginning Jan. 23, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
Video and voice are taking over the Internet and these systems are changing the way we communicate, collaborate, and learn. It is now as common to watch streaming video of lectures or use video-based chat to communicate with friends, as it was for our parents to use the telephone, and the future includes telepresence with video walls. This course covers the underlying standards and protocols for Internet-based voice (VoIP) and video (for both streaming and real-time communication), and also the design and implementation of large video and unified communication systems. The course begins with a review of the protocols and codecs used for audio and video (G.711, G.729, H.264, RTP, and RTCP) followed by a technical analysis of the SIP protocol suite and the IETF and ITU protocols that are used along with it. The necessary theory and real-world requirements for quality of service and network security are also discussed. With this information as a foundation we study network building blocks such as VoIP and video clients (both hardware-based systems and software-based systems on phones and PCs), SIP servers and proxies, border controllers, and multimedia multi-port bridges (MCU). We also discuss the voice and video services that are available today, both proprietary services such as Skype or iChat, as well as services based on open codecs and standards. An integral part of the course is the use of videoconferencing systems, VoIP, and collaboration software by students and the teaching staff; this usage serves as a basis for discussion and the analysis of current system limitations and future possibilities. Prerequisite: CSCI E-131b, or equivalent experience. (4 credits)
CSCI E-147 Medical Informatics
Spring term (23657)
Oleg Pianykh, PhD, Leading Imaging Scientist, Beth Israel Deaconess Medical Center and Assistant Professor of Radiology, Harvard Medical School.
Thursdays beginning Jan. 26, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,900, graduate credit $1,900.
This course covers the most important parts of the field of medical informatics: history, underlying concepts and standards, digital data and networks in medicine, medical image analysis and CAD, confidentiality and security, developing clinical applications and software, teleradiology and medical clouds, building digital hospital workflow, and the science and art of medical imaging. Prerequisites: CSCI E-50a or CSCI E-52, preferably in an object-oriented language such as C++ or Java. (4 credits)
CSCI E-153 Web Development Using XML
Fall term (12151)
David P. Heitmeyer, AM, Senior Software Product Architect/Engineer, iCommons, Office of the CIO, Harvard University.
Tuesdays beginning Aug. 30, 7:35-9:35 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
Students learn key XML technologies (XML, XPath, XSL, XML Schema, RNG, DTD, XQuery, DOM) as well as specific markup languages relevant to website development (XHTML, XHTMI Mobile Profile, RSS, RDF, XSL-FO, SVG, DocBook, OOXML, OpenDocument, XForms). In addition, the course covers topics such as XML and databases (native XML databases and RDBMS), XML programming APIs (DOM and SAX), Apache Cocoon (an open-source XML publishing framework), and the role of XML in Web 2.0 to deliver data and functionality through Ajax and web services (SOAP and REST). Using these technologies, students develop dynamic, data-driven websites that are capable of delivering content in a variety of media formats (screen, text, print, graphics) to a variety of devices (desktop, handheld, mobile) for a variety of audiences. Prerequisite: CSCI E-12, or the equivalent experience. (4 credits)
CSCI E-160 Java for Distributed Computing
Fall term (11838)
Charles M. Sawyer, Jr., MS, Technical Account Manager, Google and Consultant, B.B. King Museum.
Wednesdays beginning Aug. 31, 7:35-9:35 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
Spring term (23664)
Charles M. Sawyer, Jr., MS, Technical Account Manager, Google and Consultant, B.B. King Museum.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Jan. 25. Optional sections to be arranged. Lecture 1 video.
This course comprises a rigorous study of the core Java programming language followed by an inquiry into Java-based distributed computing. The first part covers classes and inheritance, abstract classes, interfaces, exceptions, threads, packages, events, reflection, and Javadoc. Major features of Java introduced with Java6 are presented, including enums, for-each collection iteration, and annotation. These common tools for Java development are discussed: JUnit, log4j, and Ant. The second half of the course is devoted to distributed computing, first through building web apps with the Google Web Toolkit, then by using Remote Method Invocation (RMI) to make remote procedure calls on Java objects on other systems. Prerequisite: substantial experience with another programming language, preferably an object-oriented language. (4 credits)
CSCI E-170 Security, Privacy, and Usability
Spring term (22815)
Scott Bradner, University Technology Security Officer, Office of the CIO, Harvard University.
Fridays beginning Jan. 27, 5:30-7:30 pm.
Course tuition: noncredit $1,950, graduate credit $1,950.
This course introduces computer and network security as it relates to enterprise and personal computing as well as to data networking. Special attention is paid to the implications of security technologies on enterprise and governmental policies including privacy policies, surveillance, and digital rights management. Topics include cryptography, forensics, human factors, watermarking, spyware, and privacy- and content-protecting technology. Students are expected to read a substantial amount of online material for each lecture. Prerequisites: basic knowledge of computer networks and systems. (4 credits)
CSCI E-175 Cloud Computing and Software as a Service
Fall term (13602)
Zoran B. Djordjevic, PhD, Enterprise Architect, Keane, Inc.
Fridays beginning Sept. 2, 5:30-7:30 pm. Optional sections Fridays, 7:35-9:35 pm.
Course tuition: noncredit $1,900, graduate credit $1,900.
Cloud computing is transforming the IT industry, opening the possibility for infinite or at least highly elastic scalability in the delivery of enterprise applications and software as a service (SaaS). Amazon Elastic Cloud, Microsoft's Azure, Google App Engine, and a few other offerings give both mature software vendors and new start-ups the option to deploy their applications to a system of infinite computational power with practically no capital investment and with modest operating costs proportional to the actual use. The course examines the most important APIs used in the Amazon and Microsoft Cloud, including the techniques for building, deploying, and maintaining applications. We learn how to use Cloud as the infrastructure for existing and new services. We use Hadoop, the open source implementation of MapReduce framework and RestFul Web services, to build very powerful and efficient applications. We also learn how to deal with not trivial issues in the Cloud: load balancing, caching, distributed transactions, and identity and authorization management. Prerequisites: familiarity with Java and XML. (4 credits)
CSCI E-186 Economics and Computation
Fall term (13775)
David C. Parkes, PhD, Gordon McKay Professor of Computer Science, Harvard University.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Sept. 2. Optional sections to be arranged. Lecture 1 video.
This course covers the interplay between economic thinking and computational thinking as it relates to electronic commerce, social networks, collective intelligence, and networked systems. Topics covered include game theory, peer production, reputation and recommender systems, prediction markets, crowd sourcing, network influence and dynamics, auctions and mechanisms, privacy and security, matching and allocation problems, computational social choice, and behavioral game theory. Emphasis is on core methodologies, with students engaged in theoretical, computational, and empirical exercises. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 186. Prerequisites: CSCI E-52, CSCI E-119, and STAT E-50, or the equivalents, with grades of B+ or higher. ECON E-1010 recommended but not required. (4 credits)
CSCI E-190 Bioinformatics Algorithms
Spring term (23052)
Jeff Parker, PhD, Lecturer in Extension, Harvard University.
Tuesdays beginning Jan. 24, 7:35-9:35 pm. Required sections Tuesdays, 5:30-7:30 pm.
Course tuition: noncredit $1,900, graduate credit $1,900.
Living things encode their genetic code in DNA, and use this information to regulate life processes. Bioinformatics is the study of living organisms viewed as information processors. We study algorithms for sequence alignment, motif finding and gene finding, construction of phylogenetic trees, and structure prediction. While students can find implementations of many of these algorithms, a study of the algorithms leads to a better understanding of the assumptions and limitations of existing algorithms, and gives students the background to evaluate new ones. We explore some important biological problems, discuss mathematical models, and look at computer algorithms to solve these problems. Most of the interesting problems are intractable, so we look at heuristics. Prerequisite: CSCI E-50b, or the equivalent. (4 credits)
CSCI E-205 Computing Foundations for Computational Science
Fall term (13806)
Hanspeter Pfister, PhD, Gordon McKay Professor of the Practice of Computer Science, Harvard University.
Cristopher Cecka, PhD, Lecturer, Institute for Applied Computational Science, Harvard University.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Sept. 2. Optional sections to be arranged. Lecture 1 video.
Computation has long been an important tool for scientists, but the past two decades have seen a true revolution in the practice of science. Computation, in the form of both simulation and analysis, has joined theory and experimentation as the oft-quoted third pillar of science. This is an applications course highlighting the use of computers in solving scientific problems. Students are exposed to fundamental computer science concepts such as computer architectures, data structures, algorithms, and parallel computing. Students learn the fundamentals of scientific computing including abstract thinking, algorithmic development, and assessment of computational approaches. They learn to use a series of open source tools and libraries and apply them to data analysis, modeling, and visualization of real scientific problems. The course emphasizes parallel programming and parallel thinking. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 205. Prerequisite: CSCI E-52, or the equivalent. (4 credits)
CSCI E-207 Introduction to Formal Systems and Computation
Fall term (12161)
Harry R. Lewis, PhD, Gordon McKay Professor of Computer Science, Harvard University.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Sept. 2. Optional sections to be arranged. Lecture 1 video.
This course is a general introduction to formal systems and the theory of computation, teaching how to reason precisely about computation and prove mathematical theorems about its capabilities and limitations. Topics include finite automata, Turing machines, formal languages, computability, uncomputability, computational complexity, and the P vs. NP question. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 121. Prerequisites: CSCI E-119 and CSCI E-120 with final grades of B+ or higher, or the equivalent. (4 credits)
CSCI E-215 Unix/Linux Systems Programming
Spring term (20034)
Bruce Molay, AB, Lecturer in Extension, Harvard University.
Tuesdays beginning Jan. 24, 7:35-9:35 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
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++ and a data structures course such as CSCI E-119; some experience using Unix helpful. (4 credits)
CSCI E-220 Artificial Intelligence
Fall term (11420)
David Albert, MS, Instructional Technology Specialist.
Thursdays beginning Sept. 1, 5:30-7:30 pm. Required sections Thursdays, 7:35-8:35 pm.
Course tuition: noncredit $1,900, graduate credit $1,900.
Artificial intelligence (AI) is the study of computer systems that appear to behave with some degree of human intelligence. This survey course covers major background and state-of-the-art topics in AI: game playing, natural language understanding, theorem proving, computer vision, genetic algorithms, and neural networks. Other topics in machine learning, planning, and expert systems are covered if time permits. The LISP programming language is introduced and used for some programming assignments; others may be completed in Java or C. Prerequisite: CSCI E-50b, or the equivalent programming experience. (4 credits)
CSCI E-234 Introduction to Computer Graphics
Fall term (13334)
Jeff Parker, PhD, Lecturer in Extension, Harvard University.
Wednesdays beginning Aug. 31, 7:35-9:35 pm. Required sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
This course introduces important data structures and algorithms that are useful for creating images on a computer, providing students with sufficient background to write substantial computer graphics applications. We introduce the mathematical tools and important computer graphics concepts such as geometric modeling, illumination, texture mapping, and anti-aliasing. Students learn OpenGL, the industry standard API for computer graphics. Students learn to write full-fledged interactive graphics applications with 3-D transformations and projections, shading, modeling hierarchies, and animation. We also introduce the principles of ray tracing, a high-end image generation technique. This course does not cover the use of graphic design applications such as Photoshop and AutoCAD; it is a programming class. Prerequisite: CSCI E-119, or the equivalent. (4 credits)
CSCI E-237 Programming Microsoft .NET
Fall term (13188)
David S. Platt, ME, President, Rolling Thunder Computing, Inc.
Mondays beginning Aug. 29, 7:35-9:35 pm.
Course tuition: noncredit $1,950, graduate credit $1,950.
The first half of this course covers the .NET framework in some detail. Covered topics include the type system, exceptions, garbage collection, threading, and reflection. The second half surveys the additional frameworks that are built on top of the .NET framework. Topics include ASP.NET, web services, WCF, WPF, and others to be selected based on class interest and availability of guest speakers. Extensive programming homework required. Prerequisites: familiarity with either the C# or VB.NET languages; at least one year of industrial experience in object-oriented programming. (4 credits)
CSCI E-241 Web Development Using ASP.NET MVC
Spring term (23020)
Joseph Ficara, ASEE, Architect and Senior Staff Software Engineer, Autonomy an HP Company.
Wednesdays beginning Jan. 25, 7:35-9:35 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
This course teaches students to create architecturally flexible web applications using Microsoft ASP.NET MVC with C#. We cover ASP.NET MVC routing, controllers and actions, domain models, views, extending controllers, Ajax, representational state transfer (REST) and client scripting, security and vulnerability, authorization and authentication, caching, internationalization, and performance. In addition, data access using LINQ, Entity Framework, and SQL server is considered. Test-driven development and dependency injection are at the core of the course, and are employed throughout. Students gain a deep understanding of ASP.NET MVC and are prepared to build architecturally flexible, highly interactive web applications. Prerequisite: CSCI E-237, or one year of .NET development using C#. (4 credits)
CSCI E-247/W Software Design: Principles, Models, and Patterns
Fall term (12070)
William B. Robinson, PhD, Lecturer in Extension, Harvard University.
Tuesdays beginning Aug. 30, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online option available. Writing-intensive course. Lecture 1 video.
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. 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 prior implementation. Prerequisites: CSCI E-119, or the equivalent and proficiency in Java. (4 credits)
CSCI E-250 Abstraction and Design in Computation
Spring term (23371)
John Gregory Morrisett, PhD, Allen B. Cutting Professor of Computer Science, Harvard University.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Jan. 25. Required sections to be arranged. Lecture 1 video.
This course covers abstraction and design in computation. Topics include functional and object-oriented styles of programming, software engineering in the small, and models of computation. The goal is to understand how to design large programs to make them readable, maintainable, efficient, and elegant. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 51. Exercises are conducted in a combination of OCaml and Java. Prerequisites: CSCI E-52 and CSCI E-120, or the equivalents. (4 credits)
CSCI E-253 Developing Web-Based Database Applications
Fall term (12465)
Maria R. Garcia, EdD, Associate Professor of Graduate Studies, Franklin Pierce University.
Tuesdays beginning Aug. 30, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
Web-based applications offer the advantages of workstation productivity and ease of use together with the power and sophistication of relational database servers. This course provides the concepts and skills necessary to design and develop web-based database applications. Students build a working database application using Oracle and a client application using ColdFusion to serve the information needs of an enterprise. Through hands-on projects, students build, populate, query, and write transactions for a relational database using SQL, and develop a client application to access their database using ColdFusion. As a final project, students build a prototype client-server application. Prerequisites: programming experience, preferably in an object-oriented programming language such as C++ or Java, familiarity with Unix/Linux, and the ability to create simple HTML pages. (4 credits)
CSCI E-256 Oracle Database Administration
Spring term (22750)
Patrick McGowan, BSEE, Manager, Database Administration, Harvard University Information Technology.
Wednesdays beginning Jan. 25, 5:30-7:30 pm. Optional sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
Students study the internal structure and organization of an Oracle database environment. The course presents a structured approach to planning, building, tuning, and monitoring an Oracle 11g database. Students create an Oracle database, tablespaces, user accounts, views, indices, and other objects necessary to support an application. We also examine some of the issues involved when running a large number of databases within an environment and with running large databases. Prerequisites: an understanding of the principles of a relational database model, a working knowledge of SQL, and familiarity with PL/SQL. (4 credits)
CSCI E-268 Database and Information Management Systems
Spring term (23300)
David G. Sullivan, PhD, Lecturer on Computer Science, Boston University.
Wednesdays beginning Jan. 25, 7:35-9:35 pm. Required sections to be arranged.
Course tuition: noncredit $1,950, graduate credit $1,950.
This course covers the fundamental concepts of information management. Topics include data models (relational, object-oriented, and others); implementation techniques of database management systems (indexing structures, concurrency control, recovery, and query processing); management of unstructured and semistructured data; and parallel and distributed databases. Prerequisites: CSCI E-119, or the equivalent, and strong programming skills in Java, C, or C++. (4 credits)
CSCI E-272 System z and Enterprise Computing
Spring term (23686)
*** CSCI E-272 Spring term (23686) has been CANCELED. ***
IBM's System z is a family of hardware and software products that performs 60 percent of the world's transaction processing and holds a similar percentage of the world's business data. System z mainframe computers are present in close to 99 percent of Fortune 500 companies and are responsible for the vast majority of critical business calculations executed by those companies. System z could run instances of its native operating system called z/OS but can equally easily run thousands of Linux or AIX operating systems, all from one box and one command console. With unprecedented IO capabilities, System z has the ability to deliver transaction processing at minimum operating cost and energy consumption, while offering unmatched security and reliability. We learn how to build applications using Rational Developer for System z and EGL (Enterprise Generation Language) that allow us to instantiate our projects as Java, Cobol, or JavaScript applications. We also learn how to expose the processing power of System z as web services, communicate through messaging systems, and control the transaction processing using CICS services. Some administrative skills are also be introduced, most notably those needed to deal with versatile data sets. Prerequisite: familiarity with Java, C# or C, and XML. (4 credits)
CSCI E-275 Software Engineering
Spring term (21908)
William B. Robinson, PhD, Lecturer in Extension, Harvard University.
Tuesdays beginning Jan. 24, 5:30-7:30 pm. Required sections to be arranged.
Course tuition: graduate credit $1,950.
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 prepare a presentation for the ALM in IT faculty committee based on the course project. Programming assignments are done in Java. Prerequisites: student must be degree candidates in the Graduate Program in Information Technology and have completed nine courses in the software engineering concentration, including CSCI E-247/W, and have proficiency in Java, or permission of the instructor. (4 credits)
CSCI E-287 Computer Architecture
Fall term (13799)
James L. Frankel, PhD, Lecturer in Extension, Harvard University.
Tuesdays beginning Aug. 30, 7:35-9:35 pm. Optional sections Tuesdays, 6:30-7:30 pm.
Course tuition: noncredit $1,900, graduate credit $1,900.
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-119, or the equivalent) with some background in boolean/digital logic preferred, but not required (ENSC E-123, or the equivalent). (4 credits)
CSCI E-295 Compiler Design and Implementation
Spring term (23653)
James L. Frankel, PhD, Lecturer in Extension, Harvard University.
Tuesdays beginning Jan. 24, 7:35-9:35 pm. Optional sections to be arranged.
Course tuition: noncredit $1,900, graduate credit $1,900.
This course is a study of the theory and practice required for the design and implementation of interpreters and compilers for programming languages. Coursework ranges from the abstract, such as categorization of grammars and languages, to the concrete, such as specific algorithms used in compilers and practical performance issues. Topics include lexical analysis, parsing, symbol table generation, type checking, error detection, code generation, optimization, and run-time support. Techniques for top-down and bottom-up parsing both with and without the use of automated tools are studied. Local and global optimization are covered. An extensive programming project is required of all students. Prerequisites: knowledge of data structures and programming experience (CSCI E-119, or the equivalent) with an advanced algorithms course preferred, but not required (CSCI E-124, or the equivalent). (4 credits)
CSCI E-300 Randomized Analysis
Fall term (13748)
Michael Mitzenmacher, PhD, Gordon McKay Professor of Computer Science, Harvard University.
Course tuition: noncredit $1,950, graduate credit $1,950.
Online only, beginning Sept. 2. Optional sections to be arranged. Lecture 1 video.
This advanced course focuses on randomized algorithms and probabilistic analysis of algorithms. Topics include Chernoff Bounds, Markov Chains, the probabilistic method, and hashing. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 223. Prerequisites: CSCI E-119, CSCI E-120, or CSCI E-124, and basic probability. (4 credits)

Browse courses by subject