This page contains content from the 2007–08 academic year. For current information, visit the Harvard Extension School website at www.extension.harvard.edu.
Computer Science
Related Courses
- COMM E-180 Technical Writing
- EXPO E-171 Writing and Editing for the Web
- EXPO E-510 Editing Technical Prose
- JOUR E-142 Storytelling in the Digital Age
- LSTU E-120 Internet and Society: Technologies and Politics of Control
- MATH E-104 Discrete Mathematics with Computer Science Applications
- PHYS E-123a Laboratory Electronics: Analog Circuit Design
Related Subjects
Also see the Master of Liberal Arts and Certificate in Information Technology.
Courselist
- CSCI E-1 Practical Computing (Fall)
- CSCI E-4 Virtual Worlds: What They Are, How People Are Using Them, And How You Can Too (Fall)
- CSCI E-6 Internet Crime (Fall)
- CSCI E-7 Exposing Digital Photography (Spring)
- CSCI E-9 Computational Art: Explorations in Screen-Based and Physical Computing (Spring)
- CSCI E-11 Digital Multimedia Art (Spring)
- CSCI E-12 Fundamentals of Website Development (Spring)
- CSCI E-13 Practical Perl (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 with Maya (Fall)
- CSCI E-24 Video Editing and Digital Design (Spring)
- CSCI E-50a Introduction to Computer Science Using Java I (Fall)
- CSCI E-50b Introduction to Computer Science Using Java II (Spring)
- CSCI E-64 Visualization (Spring)
- CSCI E-75 Building Dynamic Websites (Fall, Spring)
- CSCI E-113 Introduction to C, Unix/Linux, and CGI Programming (Fall)
- CSCI E-119 Data Structures (Spring)
- CSCI E-124 Algorithms and Data Structures (Spring)
- CSCI E-131b Communication Protocols and Internet Architectures (Fall, Spring)
- CSCI E-149 Artificial Intelligence for Computer Games (Spring)
- CSCI E-153 Web Development Using XML (Fall)
- CSCI E-154 Enterprise Portals (Spring)
- CSCI E-156 The Science of Google Search (Fall)
- CSCI E-160 Java for Distributed Computing (Fall, Spring)
- CSCI E-162 Distributed and Enterprise Computing (Spring)
- CSCI E-168 Building Web-Based Software with Ruby and Ruby on Rails (Fall)
- CSCI E-170 Security, Privacy, and Usability (Spring)
- CSCI E-180 Graphical Applications for the Web and Corporate Desktop (Spring)
- 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-225 Object-Oriented Programming in C++ (Spring)
- CSCI E-230 .NET Programming in C# (Fall)
- CSCI E-234 Introduction to Computer Graphics (Spring)
- CSCI E-237 Distributed Programming Using Microsoft .NET (Spring)
- CSCI E-247/W Software Design: Principles, Models, and Patterns (Fall)
- CSCI E-251 Principles of Operating Systems (Spring)
- CSCI E-253 Developing Web-based Database Applications (Fall)
- CSCI E-256 Oracle Database Administration (Spring)
- CSCI E-259 XML with Java, Java Servlet, and JSP (Fall)
- CSCI E-268 Information Management (Spring)
- CSCI E-275 Software Architecture and Engineering (Spring)
- CSCI E-295 Compiler Design and Implementation (Fall)
- CSCI E-300 Randomized Analysis (Fall)
CSCI E-1
Practical Computing (11322)
(Website) (Printable version)
Daniel Armendariz, SB, Senior Computer Assistant, Massachusetts Institute of Technology. Rei Diaz, Technical Support Analyst, Harvard University Library.
Course tuition: noncredit, undergraduate, and graduate credit $1,700.
Fall
term:
Wednesdays, 5:30-7:30 pm, 53 Church Street, Room L01. Optional sections to be arranged.
Online and on-campus options. See Distance Education. 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. In this course we demystify computers and the Internet, along with their jargon, so that students understand not only what they can do with each but also how it all works and why. Students leave this course armed with a new vocabulary and equipped for further exploration of computers and the Internet. Topics include hardware, software, the Internet, multimedia, security, website development, programming, and dotcoms. This course is designed both for those with little, if any, computer experience and for those who use a computer every day. (4 credits)
CSCI E-4
Virtual Worlds: What They Are, How People Are Using Them, And How You Can Too
Course tuition: noncredit, undergraduate, and graduate credit $1,700. Limited enrollment.
Lecture 1 video.
Fall term, section 1 (12911) (Website) (Printable version): Rebecca Nesson, JD. Mondays, 7:35-9:35 pm, Berkman Center, 23 Everett Street, Room 202. Online and on-campus options. See Distance Education.
Fall term, section 2 (13012) (Website) (Printable version): Rebecca Nesson, JD. Online only, beginning Sept. 18. See Distance Education.
Today, virtual worlds like Second Life are an exciting new frontier. Second Life has a flourishing economy and millions of users doing everything from teaching and taking Harvard courses to shopping at virtual American Apparel and Nike stores to running a night club. In the future, virtual environments promise to become a substantial part of our online existence. This course provides a chance to get on the inside track. We use Second Life as our classroom and laboratory and alternate between meeting on-campus and in Second Life. We examine models for virtual world law and government, economics and business, cultural norms, art, education, and activism. Work for the course is largely project based. In the first half of the course, a group project is done in collaboration with the Harvard Law School course, Trials in Second Life. In the second half of the course, students do either original research papers or hands-on development projects of their own choosing. Prerequisites: proficiency with using computers and the Internet and willingness to experiment with new technology. (4 credits)
CSCI E-6
Internet Crime (12912)
(Website) (Printable version)
Simson L. Garfinkel, PhD, Postdoctoral Fellow in Computer Science, Center for Research on Computation and Society, Harvard University and Associate Professor of Computer Science, Naval Postgraduate School. Nenette L. Day, MS, Writer.
Course tuition: noncredit and graduate credit $1,700. Limited enrollment.
Fall
term:
Thursdays, 7:35-9:35 pm, 53 Church Street, Room L01.
We examine the major controversies affecting today's Internet resulting from the interplay of policy, law, technology, and human nature. Topics include computer crime, intellectual property, privacy, encryption, free speech, identity, and data mining. This course explains the leading legal conflicts and ethical challenges posed by information technology and the Internet, but with a highly technical bent. Is downloading music from LimeWire illegal, and should it be? Does a patent holder really have the ability to turn off features inside your TiVo? Can you register the domain name apple-is-rotten.com and get away with it? Students should be prepared to do extensive independent research, involving both technology and policy analysis. Prerequisites: students should be familiar with Internet technology including clients, servers, the domain name system, TCP, SSL, and encryption. Students should also be familiar with the US structure of government including the design and purpose of the three branches, separation of powers, case law, and the regulatory process. Due to the importance of class participation, class attendance is mandatory. (4 credits)
CSCI E-7
Exposing Digital Photography (22866)
(Website) (Printable version)
Daniel Armendariz, SB, Senior Computer Assistant, Massachusetts Institute of Technology.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Wednesdays, 7:35-9:35 pm, Harvard Hall, Room 103.
Photography is a popular hobby that has exploded in recent years as digital cameras have become more 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 become better photographers through an understanding of the technical aspects and terms of a digital camera, from the one-time-user to the professional. 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. Students are not required to own a digital camera, but if you bring one, one with a manual mode and an option for RAW is recommended. (4 credits)
CSCI E-9
Computational Art: Explorations in Screen-Based and Physical Computing (22834)
(Website) (Printable version)
Bakhtiar Mikhak, PhD, Co-founder, Media Modifications, Ltd. Andrew Sempere, SM.
Course tuition: noncredit and graduate credit $1,700. Limited enrollment.
Spring
term:
Mondays, 7:35-9:35 pm, 51 Brattle Street, Room 123/5. Required sections Thursdays, 7:35-9:35 pm.
This course is a practical introduction to computational art in a collaborative studio environment. Through creation, exhibition, and critique of a series of screen-based and physical computing artworks, students learn the three key elements of computational artwork: awareness (input or sensing); intention (processing or computation), and action (output or display). Prerequisite: experience with Macintosh or Windows operating systems. (4 credits)
CSCI E-11
Digital Multimedia Art (22124)
(Website) (Printable version)
Roy Pardi, MFA, Artist.
Course tuition: noncredit and graduate credit $1,700. Limited enrollment.
Spring
term:
Wednesdays, 5:30-7:30 pm, 53 Church Street, Room 104. Optional sections Wednesdays, 7:35-9:35 pm.
This course examines the history, theory, and practice of digital multimedia as an art form. We investigate the current state of multimedia art practice through the work of numerous artists and theorists. The emphasis is on understanding the medium and finding intelligent and effective solutions to art-making problems. In the process, students receive a thorough exposure to timeline-based authoring and Actionscript programming in Macromedia Flash. Collaboration is encouraged, and students are expected to share their knowledge and expertise. Evaluation is based on participation in discussion and critiques, presentations, and quality of artwork produced. The software tools used are Macromedia Flash, and Adobe Photoshop, along with various sound and graphics editing programs. Prerequisite: experience with Macintosh or Windows operating systems. (4 credits)
CSCI E-12
Fundamentals of Website Development (21144)
(Website) (Printable version)
David P. Heitmeyer, AM, Senior Software Product Architect/Engineer, iCommons, Central Administration Information Technology, Harvard University.
Course tuition: noncredit and graduate credit $1,975.
Spring
term:
Wednesdays, 5:30-7:30 pm, Science Center, Hall A. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
This course provides a foundation in several facets of establishing and maintaining a website. The first part of the course is devoted to creating, designing, and publishing content on the Web (XHTML, HTML, CSS, JavaScript, GIF, JPEG, PNG, and PDF). The second part of the course covers configuring and maintaining a web server, including HTTP, access control, and security. Dynamically generated websites and database-driven websites are discussed (CGI, PHP, and JSP). In addition, tools and techniques for maintaining a website, such as log analysis, version control, document validation, and page and site analysis, are covered. Prerequisites: CSCI E-1, or the equivalent experience. (4 credits)
CSCI E-13
Practical Perl (22818)
(Printable version)
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Optional sections to be arranged.
*** CSCI E-13 has been CANCELED.***
Online and on-campus options. See Distance Education.
Perl is described as the Swiss army knife of programming languages. This course emphasizes practical applications of Perl: data manipulation and analysis, report generation, web programming, and integration of databases for use in these applications. Emphasis is on writing idiomatic, correct, and maintainable Perl in a Unix environment. Other topics may include the Apache web server and its mod_perl extension, XML, HTML::Mason, and performance analysis. Prerequisites: CSCI E-50b, or the equivalent experience in any high-level language such as C++ or Pascal, and CSCI E-12, or permission of the instructor. Experience with command-line-based operating systems recommended. (4 credits)
CSCI E-14
Understanding and Developing Multimedia
Course tuition: noncredit and graduate credit $1,975.
Lecture 1 video.
Fall term, section 1 (12712) (Website) (Printable version): Rob Graham, BS, Director of Training, LearningCraft. Tuesdays, 5:30-7:30 pm, 53 Church Street, Room L01. Online and on-campus options. See Distance Education. Limited enrollment.
Fall term, section 2 (12835) (Website) (Printable version): Rob Graham, BS, Director of Training, LearningCraft. Online only. See Distance Education. Students must view sample online lectures before they register.
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 8 Professional, students learn how to plan out and create interactive programs designed to entertain, educate, and inform others. This course also includes exploration of graphics design and development, audio and video editing tools, and an overview of ActionScript, the Flash scripting language. Prerequistes: understanding of Macintosh and/or Windows operating systems. (4 credits)
CSCI E-19
Video Field Production (12816)
(Syllabus) (Printable version)
Allyson Sherlock, MA, Digital Software Specialist, Emerson College.
Course tuition: noncredit and graduate credit $1,975. Limited enrollment.
Fall
term:
Saturdays, 10 am-1 pm, 53 Church Street, Room 104. Required sections to be arranged.
Through lectures and hands-on projects, students learn the equipment and techniques used in single-camera field production. Students write and produce a variety of projects which 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 with Maya (12982)
(Syllabus) (Printable version)
Tereza Flaxman, MFA, 3-D Animator and Author.
Course tuition: noncredit and graduate credit $1,975. Limited enrollment.
Fall
term:
Tuesdays, 5:30-7:30 pm, 53 Church Street, Room 104. Required sections Thursdays, 5:30-7:30 pm.
This course is an introduction to three-dimensional computer modeling and animation. The industry standard Maya package is used throughout, although the techniques taught in this course should work in most other 3-D animation packages. Topics include modeling using polygons, NURBS, and subdivision surfaces. Basic texture mapping, lighting, and rendering are also discussed. Students learn how to rig 3-D models and how to animate them using forward and inverse kinematics and path animation. Prerequisite: familiarity with either Windows or Macintosh operating systems. (4 credits)
CSCI E-24
Video Editing and Digital Design (22659)
(Syllabus) (Printable version)
Allyson Sherlock, MA, Digital Software Specialist, Emerson College.
Course tuition: noncredit and graduate credit $1,975. Limited enrollment.
Spring
term:
Saturdays, 10 am-1 pm, 53 Church Street, Room 104. Required sections to be arranged.
This course serves as an introduction to the art of video postproduction. Students learn advanced editing techniques with an in-depth examination of Final Cut Pro. To further enhance their projects, students learn Apple's Soundtrack, Motion, and DVD Studio Pro. Prerequisite: CSCI E-19, or the equivalent. (4 credits)
CSCI E-50a
Introduction to Computer Science Using Java I (10701)
(Website) (Printable version)
Henry H. Leitner, PhD, Senior Lecturer on Computer Science, Harvard University.
Course tuition: noncredit, undergraduate, and graduate credit $1,700.
Fall
term:
Mondays, 5:30-7:30 pm, Science Center, Hall D. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
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 (20659)
(Website) (Printable version)
Henry H. Leitner, PhD, Senior Lecturer on Computer Science, Harvard University.
Course tuition: noncredit, undergraduate, and graduate credit $1,700.
Spring
term:
Mondays, 5:30-7:30 pm, Harvard Hall, Room 202. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
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-64
Visualization (22872)
(Website) (Printable version)
Hanspeter Pfister, PhD, Gordon McKay Professor of the Practice of Computer Science, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Optional sections to be arranged.
Online only, beginning Jan. 31. See Distance Education. Lecture 1
video.
The amount and complexity of information produced in science, engineering, business, and everyday human activity is increasing at staggering rates. We must increasingly rely on computational approaches to generate abstractions that help us to gain insights into large collections of data. The field of visualization seeks to answer questions about science and humanity by developing methods that transform data into meaningful, perceptually intuitive representations. Good visualizations not only present a visual interpretation of data, but improve comprehension, communication, and decision making. The aim of this course is to expose students to visualization methods and techniques that increase the understanding of complex data. The course covers how the human visual system processes and perceives images, good design practices for visualization, and tools for visualization of data from a variety of fields. The course is targeted both towards students interested in using visualization in their own work, and students interested in building better visualization tools and systems. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 171. Prerequisites: CSCI E-119, or the equivalent. Students must view sample online lectures before they register. (4 credits)
CSCI E-75
Building Dynamic Websites
Course tuition: noncredit and graduate credit $1,700.
Online and on-campus options. See Distance Education. Lecture 1
video.
Fall term (12985) (Website) (Printable version):
*** CSCI E-75 (Fall term) has been CANCELED.***
Spring term (22858) (Website) (Printable version): David J. Malan, PhD, Lecturer on Computer Science, Harvard University. Mondays, 7:35-9:35 pm, Harvard Hall, Room 202. Optional sections to be arranged.
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, and how to use Ajax with both XML and JSON. The course discusses issues of security, scalability, and cross-browser support. Prerequisite: prior programming experience in any language. (4 credits)
CSCI E-113
Introduction to C, Unix/Linux, and CGI Programming (10033)
(Website) (Printable version)
Bruce Molay, AB, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Wednesdays, 7:35-9:35 pm, Science Center, Room 110. Optional sections to be arranged.
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 curriculum covers the C programming language, Unix shell scripts, HTML, and CGI programming. 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 interactive webpages, and use CGI to provide web access to databases. 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 (22568)
(Website) (Printable version)
David G. Sullivan, PhD.
Course tuition: noncredit, undergraduate, and graduate credit $1,700.
Spring
term:
Wednesdays, 7:35-9:35 pm, 1 Story Street, Room 304. Required sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
A survey of fundamental data structures for information processing, including lists, stacks, queues, trees, and graphs. The course 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-50b, or the equivalent). (4 credits)
CSCI E-124
Algorithms and Data Structures (21462)
(Website) (Printable version)
Michael Mitzenmacher, PhD, Gordon McKay Professor of Computer Science, Harvard University.
Course tuition: noncredit and graduate credit $1,975.
Spring
term
Online only, beginning Feb. 1. See Distance Education. Optional sections to be arranged. Lecture 1 video.
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 (MATH E-104, or the equivalent). Students must view sample online lectures before they register. (4 credits)
CSCI E-131b
Communication Protocols and Internet Architectures
Course tuition: noncredit and graduate credit $1,700.
Fall term (11353) (Website) (Printable version): Leonard Evenchik, SM, Lecturer in Extension, Harvard University. Mondays, 7:35-9:35 pm, 1 Story Street, Room 304. Optional sections to be arranged. Online and on-campus options. See Distance Education. Lecture 1 video.
Spring term (21387) (Website) (Printable version): Leonard Evenchik, SM, Lecturer in Extension, Harvard University. Optional sections to be arranged. Online only, beginning Jan. 28. See Distance Education. Students must view sample online lectures before they register. 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-149
Artificial Intelligence for Computer Games (22779)
(Syllabus) (Printable version)
Kevin Dill, MS, Senior Artificial Intelligence Engineer, Blue Fang Games.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Thursdays, 7:35-9:35 pm, Science Center, Room 112.
How do non-player characters navigate from point A to point B in complex simulated environments? How do squads of non-player characters coordinate their movements so as to surround a hapless player? How do computer opponents decide what to do? How does the computer game learn about the playing style of the player and adapt the game play accordingly? What techniques can be used to create artificial characters that feel believable and emotionally credible? These are the kinds of questions that motivate our exploration of the key computational techniques that underlie today's advanced computer games. Topics include path planning and collision avoidance, reasoning architectures, tactical and strategic AI, machine learning, and believable characters. Prerequisites: CSCI E-50a required; CSCI E-119 recommended. (4 credits)
CSCI E-153
Web Development Using XML (12151)
(Website) (Printable version)
David P. Heitmeyer, AM, Senior Software Product Architect/Engineer, iCommons, Central Administration Information Technology, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Mondays, 5:30-7:30 pm, 1 Story Street, Room 306. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
This course focuses on using XML technologies in website development. The first part of the course covers fundamental XML technologies (XML, XPath, XSL, XSLT, XSLFO, XML Schemas, DTDs, and DOM) and open-source, web-based XML publishing frameworks such as Cocoon. The second part of the course covers specific markup languages (applications of XML) relevant to website development (XHTML, SVG, RDF, RSS, DocBook, and WML), with an emphasis on developing dynamic, data-driven sites that deliver content in a variety of media types (HTML, text, PDF, and graphics) to a variety of devices (desktop and handheld computers, WAP-enabled cellular phones) and audiences. In addition, XML-based web services are surveyed. Prerequisite: CSCI E-12, or the equivalent experience. (4 credits)
CSCI E-154
Enterprise Portals (22751)
(Syllabus) (Printable version)
Zoran B. Djordjevic, PhD, Software Architect, Iron Mountain, Inc.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Mondays, 5:30-7:30 pm, 53 Church Street, Room 106. Optional sections Mondays, 7:35-8:35 pm.
Enterprise portals are the latest stage in the evolution of web applications. Portals include application servers, middleware, back-end and security services, specialized tools, and other features necessary for rapid integration of multitudes of enterprise applications through a single, customizable web interface. They provide a single sign-on service, providing access to all underlying applications from cell phones, PDAs, and web browsers, without users needing to reenter security credentials. Portal components (portlets) are an advanced version of Java Servlet. We work with two portal frameworks: WebSphere Portal from IBM and Pluto from Apache Group. We examine JSR 168 Porlet API and web services for remote portlets (WSRP) in full detail and become familiar with intricate issues of portal access and security. Prerequisites: some familiarity with Java, XML, and relational database technology. (4 credits)
CSCI E-156
The Science of Google Search (12913)
(Syllabus) (Printable version)
Zoran B. Djordjevic, PhD, Software Architect, Iron Mountain, Inc.
Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Tuesdays, 5:30-7:30 pm, 53 Church Street, Room 203. Optional sections Tuesdays, 7:35-9:35 pm.
Google has become a verb, and a cultural and business phenomenon. In this course we try to understand some of the techniques that made Google possible. We analyze various access methods for efficient search and retrieval from text and other document collections. Examples include suffix arrays, inverted files or inverted indexes, and signature files. We also examine the commercial search engines that use custom network architectures and high-performance hardware to achieve sub-second query response times. Some time is devoted to text indexing engines used in relational database systems. The emphasis is on the phenomenological level and practical use of search engines. Prerequisites: some familiarity with Java, XML, and relational database technology. (4 credits)
CSCI E-160
Java for Distributed Computing
Course tuition: noncredit and graduate credit $1,700.
Fall term (11838) (Website) (Printable version): Charles M. Sawyer, Jr., MS, Systems Integration Engineer, ITA Software and Project Consultant, B. B. King Museum. Tuesdays, 7:35-9:35 pm, Science Center, Hall A. Required sections to be arranged. Online and on-campus options. See Distance Education. Lecture 1 video.
Spring term (22075) (Website) (Printable version): Charles M. Sawyer, Jr., MS, Systems Integration Engineer, ITA Software and Project Consultant, B. B. King Museum. Required sections to be arranged. Online only, beginning Jan. 29. See Distance Education. Students must view sample online lectures before they register. Lecture 1 video.
This course comprises a rigorous study of the core Java programming language followed by an inquiry into its most promising area of application, building distributed systems. The first part covers classes and inheritance, abstract classes, interfaces, exceptions, threads, packages, events, reflection, and Javadoc. Major features of Java5 are included. These common tools for Java development are discussed: JUnit, log4j, and Ant. The second part explores the use of Java to implement three-tier architectured systems. By providing support for security, networking, and threads as part of the language specification, and by offering complete portability through its virtual machine, Java is the ideal language for building applications whose objects are distributed on a network. Both major distributed object protocols—Common Object Request Broker Architecture (CORBA) and Java's Remote Method Invocation (RMI)—are surveyed. Prerequisite: substantial experience with another programming language, preferably an object-oriented language. (4 credits)
CSCI E-162
Distributed and Enterprise Computing (21510)
(Website) (Printable version)
James Farley, MS, Program Manager, Pearson Higher Education.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Wednesdays, 5:30-7:30 pm, 1 Story Street, Room 304. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
This course offers an in-depth study of the practice of building enterprise systems within the Java programming environment and Java 2 Enterprise Edition (J2EE) framework. The course progresses through a series of units (basic tools of the trade, distributed objects, data and directory services, and distributed components), covering many of the key application programming interfaces (APIs) and tools used to develop enterprise applications. The APIs covered include servlets, JavaServer Pages, Remote Method Invocation, Enterprise JavaBeans, XML, JDBC, and Java naming and directory interface. Programming assignments allow students to gain hands-on experience with these tools of the trade, and the final project provides a chance to engage in a more involved system design using these tools. Prerequisites: CSCI E-160, or the equivalent; strong Java programming experience. Experience with web technologies (HTML, CGI) and relational database technologies (SQL, DDL) is beneficial. (4 credits)
CSCI E-168
Building Web-Based Software with Ruby and Ruby on Rails (12923)
(Website) (Printable version)
John G. Norman, PhD, Chief Software Architect, H3.com.
Course tuition: noncredit and graduate credit $1,700. Limited enrollment.
Fall
term:
Wednesdays, 7:35-9:35 pm, Harvard Hall, Room 102. Optional sections to be arranged.
This course is a thorough introduction to Ruby and Ruby on Rails, focusing especially on the Rails major strength: rapid prototyping and iterative development. The course culminates in the design and implementation of a web-based software product. Prerequisites: experience with a programming language (Java, C++, Perl); experience in any framework for building web-based software (PHP, ASP, J2EE); some experience with relational databases and SQL. (4 credits)
CSCI E-170
Security, Privacy, and Usability (22815)
(Website) (Printable version)
Scott Bradner, University Technology Security Officer, Office of the Provost, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Fridays, 5:30-7:30 pm, Science Center, Hall A.
Online and on-campus options. See Distance Education. Lecture 1 video.
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-180
Graphical Applications for the Web and Corporate Desktop (22836)
(Printable version)
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Optional sections to be arranged.
*** CSCI E-180 has been CANCELED.***
This course studies how to build richly interactive graphical applications for the web, with an emphasis on fundamentals: user-centric design, OOP, and sound software engineering. Java, using Swing libraries and the Eclipse IDE, comprises a mature platform that enjoys the dominant position on the corporate desktop. Conversely, AJAX and other next-generation components such as JavaScript, JSF, asynchronous XML, GWT, and Prototype show promise as building blocks of Web 2.0, but the field is crowded and immature. We progress from detailed study of mature tools to a survey of recent tools. Lectures and homework are centered on progressively more realistic code examples. Database and server layers are supplied as needed. Prerequisites: four courses or two years of object-oriented programming, including CSCI E-119, or the equivalent. (4 credits)
CSCI E-207
Introduction to Formal Systems and Computation (12161)
(Website) (Printable version)
Harry R. Lewis, PhD, Harvard College Professor and Gordon McKay Professor of Computer Science, Harvard University.
Course tuition: noncredit and graduate credit $1,975.
Fall
term
Online only, beginning Sept. 19. See Distance Education. Required sections to be arranged. Lecture 1 video.
This course is a rigorous introduction to formal systems and the theory of computation. Elementary treatment of automata, formal languages, computability, uncomputability, computational complexity, NP-completeness, and mathematical logic are covered. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 121. Prerequisites: CSCI E-119 and MATH E-104 with final grades of B+ or higher, or the equivalent. Students must view sample online lectures before they register. (4 credits)
CSCI E-215
Unix/Linux Systems Programming (20034)
(Website) (Printable version)
Bruce Molay, AB, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Mondays, 7:35-9:35 pm, Science Center, Hall A. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
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 (11420)
(Website) (Printable version)
David Albert, MS, Instructional Technology Specialist.
Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Thursdays, 5:30-7:30 pm, Science Center, Room B-10. Required sections Thursday, 7:35-8:35 pm.
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-225
Object-Oriented Programming in C++ (22833)
(Website) (Printable version)
Kenneth J. Basye, PhD, Senior Staff Scientist, Human Language Technology Center of Excellence, Johns Hopkins University.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Thursdays, 7:35-9:35 pm, Science Center, Room 109. Optional sections to be arranged.
This course is designed to enable C programmers to become proficient in C++. Topics include class definitions, overloading functions and operators, access control, single and multiple inheritance, virtual functions and abstract classes, templates, exceptions, and the standard template library. Useful applications such as smart pointers and reference counting are also discussed. Prerequisites: a working knowledge of C, including structures and pointers, is assumed; substantial experience in C is preferred. (4 credits)
CSCI E-230
.NET Programming in C# (12807)
(Website) (Printable version)
Joseph Ficara, ASEE, Principal Software Engineer, Iron Mountain Digital.
Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Wednesdays, 7:35-9:35 pm, Sever Hall, Room 102. Optional sections to be arranged.
This course provides the student with the essentials necessary to design and develop robust and secure applications using C#, Windows forms, and the .NET framework. In addition to the essentials, the course also provides detailed coverage of advanced topics, such as LINQ, ADO.NET, writing secure .NET applications, designing and developing multithreaded applications, and web services. Prerequisite: one year of object-oriented development experience. (4 credits)
CSCI E-234
Introduction to Computer Graphics (22565)
(Website) (Printable version)
Jeff Parker, PhD, Assistant Professor of Computer Science, Merrimack College.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Thursdays, 7:35-9:35 pm, Harvard Hall, Room 102. Required sections to be announced.
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
Distributed Programming Using Microsoft .NET (22624)
(Website) (Printable version)
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Optional sections to be arranged.
*** CSCI E-237 has been CANCELED.***
Online and on-campus options. See Distance Education.
This advanced course covers networked operations in Microsoft .NET. The first half of the class covers ASP.NET, the web page server environment. The second half covers web services in .NET, including web service enhancements and the Windows messaging framework. Additional topics include .NET remoting, queued messaging, and the .NET compact framework for programming mobile devices. Extensive programming homework required. Prerequisite: CSCI E-230, or equivalent industry experience. (4 credits)
CSCI E-247/W
Software Design: Principles, Models, and Patterns (12070)
(Website) (Printable version)
William B. Robinson, PhD, Lecturer in Extension, Harvard University.
Writing-intensive course. Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Tuesdays, 7:35-9:35 pm, 1 Story Street, Room 306. Optional sections to be arranged.
Online and on-campus options. See Distance Education. 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-251
Principles of Operating Systems (22757)
(Website) (Printable version)
James L. Frankel, PhD, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Tuesdays, 7:35-9:35 pm, Science Center, Room 109. Optional sections to be arranged.
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: CSCI E-119, or the equivalent. (4 credits)
CSCI E-253
Developing Web-based Database Applications (12465)
(Website) (Printable version)
Maria R. Garcia, EdD, Associate Professor of Graduate Studies, Franklin Pierce University.
Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Wednesdays, 7:35-9:35 pm, 1 Story Street, Room 304. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
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. 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 (22750)
(Website) (Printable version)
Patrick McGowan, BSEE, Manager, Database Administration, University Information Systems, Harvard University.
Course tuition: noncredit and graduate credit $1,975.
Spring
term:
Wednesdays, 5:30-7:30 pm, 53 Church Street, Room L01. Optional sections Wednesdays, 7:35-9:35 pm.
Online and on-campus options. See Distance Education. Lecture 1 video.
Students study the internal structure and organization of an Oracle database. The course presents a structured approach to planning, building, tuning, and monitoring an Oracle 10g database. We also look at the early editions of 11g. Students create Oracle databases, tablespaces, user accounts, views, indices, and other objects necessary to support an application. 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-259
XML with Java, Java Servlet, and JSP (12931)
(Website) (Printable version)
David J. Malan, PhD, Lecturer on Computer Science, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Mondays, 7:35-9:35 pm, Maxwell Dworkin, Room G135. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
This course introduces XML as a key enabling technology in Java-based applications. Students learn the fundamentals of XML and its derivatives, including DTD, SVG, XML Schema, XPath, XQuery, XSL-FO, and XSLT. Students also gain experience with programmatic interfaces to XML like SAX and DOM, standard APIs like JAXP and TrAX, and industry-standard software like Ant, Tomcat, Xerces, and Xalan. The course acquaints students with J2EE, including JavaServer Pages (JSP) and Java Servlet, and also explores HTTP, SOAP, web services, and WSDL. The course's projects focus on the implementation and deployment of these technologies. Prerequisites: comfort with Java and HTML or XHTML is assumed. (4 credits)
CSCI E-268
Information Management (22867)
(Website) (Printable version)
Margo Seltzer, PhD, Harvard College Professor and Herchel Smith Professor of Computer Science, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Spring
term
Online only, beginning Feb. 1. See Distance Education. Optional sections to be arranged. Lecture 1 video.
This course covers the fundamental concepts of database and information management. We discuss data models: relational, object-oriented, and other; implementation techniques of database management systems, such as indexing structures, concurrency control, recovery, and query processing; management of unstructured data; terabyte-scale databases. The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 165. Prerequisites: CSCI E-119, CSCI E-215, and experience developing complex software systems. Students must view sample online lectures before they register. (4 credits)
CSCI E-275
Software Architecture and Engineering (21908)
(Website) (Printable version)
William B. Robinson, PhD, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Spring
term:
Tuesdays, 5:30-7:30 pm, 53 Church Street, Room L01. Optional sections to be arranged.
Online and on-campus options. See Distance Education. Lecture 1 video.
Software architecture deals with the structure and composition of systems. This course covers the still-evolving discipline of software architecture from the points of view of architectural principles, patterns, and styles. This course also examines how software engineering methods approach structuring and managing software projects, from requirements gathering to production release. Formal methods in software engineering have a longer history than those in software architecture, from the older waterfall method to the current extreme programming method. Students collaborate in small teams to implement a system that illustrates the architectural models discussed in class while practicing techniques in software engineering. Programming assignments are done in Java. Students taking this class as the capstone course for the information management systems concentration in the Master of Liberal Arts in Information Technology Program must meet the capstone course requirements and prepare a presentation for the IMS faculty committee based on the course project. Prerequisite: at least six Master of Liberal Arts in Information Technology courses in the software engineering concentration, including CSCI E-247/W, and proficiency in Java, or permission of the instructor. (4 credits)
CSCI E-295
Compiler Design and Implementation (12925)
(Website) (Printable version)
James L. Frankel, PhD, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,700.
Fall
term:
Tuesdays, 7:35-9:35 pm, Science Center, Room 109. Optional sections to be arranged.
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: CSCI E-119 and E-124, or the equivalent. (4 credits)
CSCI E-300
Randomized Analysis (12884)
(Website) (Printable version)
Michael Mitzenmacher, PhD, Gordon McKay Professor of Computer Science, Harvard University.
Course tuition: noncredit and graduate credit $1,975.
Fall
term
Online only, beginning Sept. 19. See Distance Education. 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: MATH E-104, CSCI E-119 or E-124, basic probability. Students must view sample online lectures before they register. (4 credits)