Computer Science
Also see the Master of Liberal Arts in Information Technology and the Certificate in Applied Sciences.
Courselist
- CSCI E-1 Understanding Computers and the Internet (Fall)
- CSCI E-2 Bits (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 (Fall)
- CSCI E-14 Understanding and Developing Multimedia (Fall)
- CSCI E-19 Video Field Production (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-75 Programming Web Applications (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-132 Advanced Topics in Data Networking Protocols and Network Architectures (Spring)
- CSCI E-153 Web Development Using XML (Fall)
- CSCI E-156 The Science of Google Search (Spring)
- CSCI E-160 Java for Distributed Computing (Fall, Spring)
- CSCI E-162 Distributed and Enterprise Computing (Spring)
- CSCI E-166 Web Services and Service-Oriented Architecture (Fall)
- CSCI E-170 Security, Privacy, and Usability (Fall)
- CSCI E-177 Introduction to Cryptography (Fall)
- CSCI E-180 Building Programs with Graphical Interfaces (Spring)
- CSCI E-207 Introduction to Formal Systems and Computation (Fall)
- CSCI E-210 Algorithms at the End of the Wire (Fall)
- CSCI E-215 Unix/Linux Systems Programming (Spring)
- CSCI E-220 Artificial Intelligence (Fall)
- CSCI E-225 Object-Oriented Programming in C++ (Fall)
- CSCI E-230 .NET Programming in C# (Fall)
- CSCI E-234 Introduction to Computer Graphics and GPU Programming (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 (Fall)
- CSCI E-253 Developing Web-based Database Applications (Fall)
- CSCI E-256 Oracle Database Administration (Spring)
- CSCI E-259 XML with Java (Spring)
- CSCI E-268 Database and Information Management Systems (Fall)
- CSCI E-275 Software Architecture and Engineering (Spring)
- CSCI E-280 Machine Learning Algorithms for Data Mining (Spring)
- CSCI E-287 Computer Architecture (Spring)
CSCI E-1
Understanding Computers and the Internet (11322)
(Website) (Print View)
David J. Malan, PhD.
Course tuition: noncredit and undergraduate credit $1,675.
Wednesday, Sept. 20, 5:30-7:30 pm, Science Center, Hall A. Optional sections to be arranged.
Fall
term
Online and on-campus options. See the Distance Education website. 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. Through optional hands-on sections and workshops, local students have opportunities to dissect as well as upgrade a computer with additional hardware, search the Internet more effectively, build a wireless network, create digital images, eradicate spyware, and design webpages. Problem sets offer online students similar opportunities. This course is designed both for those with little, if any, computer experience and for those who use a computer every day. (4 credits)
Top of page
CSCI E-2
Bits (22388)
(Website) (Print View)
Harry R. Lewis, PhD, Harvard College Professor and Gordon McKay Professor of Computer Science, Harvard University. Hal Abelson, PhD, Class of 1922 Professor of Computer Science and Engineering, Massachusetts Institute of Technology.
Course tuition: noncredit, undergraduate, and graduate credit $1,675.
Spring
term
Online only, beginning Feb. 1. See the Distance Education website. Required sections to be arranged. Lecture 1 video.
Information as quantity, resource, and property. Application of quantitative methods to understanding how information technologies inform issues of public policy, regulation, and law. How are music, images, and telephone conversations represented digitally, and how are they moved reliably from place to place through wires, glass fibers, and the air? Who owns information, who owns software, what forms of regulation and law restrict the communication and use of information, and does it matter? How can personal privacy be protected at the same time that society benefits from communicated or shared information? Mathematical methods are developed in the context of course material. The recorded lectures are from the Harvard Faculty of Arts and Sciences course Quantitative Reasoning 48. Prerequisite: high school algebra. Students must view sample online lectures before they register. (4 credits)
Top of page
CSCI E-9
Computational Art: Explorations in Screen-Based and Physical Computing (22625)
(Website) (Print View)
Bakhtiar Mikhak, PhD, Visiting Scientist, Massachusetts Institute of Technology.
Course tuition: noncredit and graduate credit $1,675. Limited enrollment.
Saturday, Feb. 3, 10 am-1 pm, 53 Church Street, Room 106. Optional sections to be arranged.
Spring
term
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)
Top of page
CSCI E-11
Digital Multimedia Art (22124)
(Syllabus) (Print View)
Roy Pardi, MFA, Multimedia Developer.
Course tuition: noncredit and graduate credit $1,675. Limited enrollment.
Wednesday, Jan. 31, 5:30-7:30 pm, 53 Church Street, Room 104. Optional sections Wednesday, 7:35-8:35 pm.
Spring
term
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)
Top of page
CSCI E-12
Fundamentals of Website Development (21144)
(Website) (Print View)
David P. Heitmeyer, AM, Senior Software Product Architect/Engineer, iCommons, Central Administration Information Technology, Harvard University.
Course tuition: noncredit and graduate credit $1,975.
Tuesday, Jan. 30, 5:30-7:30 pm, Science Center, Hall D. Optional sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. 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)
Top of page
CSCI E-13
Practical Perl (11973)
(Website) (Print View)
Justin L. Deri, BA, Software Engineer, Everyday Ventures. Benjamin H. Kram, MS, Senior Software Engineer, Harvard Division of Continuing Education.
Course tuition: noncredit and graduate credit $1,675.
Monday, Sept. 18, 7:35-9:35 pm, Maxwell Dworkin, Room G135. Optional sections to be arranged.
Fall
term
Online and on-campus options. See the Distance Education website. Lecture 1
video. See course website for all other lectures.
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: confidence in programming (CSCI E-50b, or the equivalent experience in any high-level language such as C++, Pascal, or Java), working understanding of HTML (CSCI E-12, or permission of the instructor), and experience with command-line-based operating systems. (4 credits)
Top of page
CSCI E-14
Understanding and Developing Multimedia
Course tuition: noncredit and graduate credit $1,975.
Online and on-campus options. See the Distance Education website. Lecture 1
video. See course website for all other lectures.
Fall term, section 1 (12712) (Website) (Print View): Rob Graham, BS, Director of Training, LearningCraft. Monday, Sept. 18, 5:30-7:30 pm, 53 Church Street, Room L01. Limited enrollment.
Fall term, section 2 (12835) (Website) (Print View): Rob Graham, BS, Director of Training, LearningCraft. Online only. See the Distance Education website. Students must view sample online lectures before they register.
This course provides a hands-on approach to the world of interactive communications; offers a solid overview of the creation of media elements like audio, video, interactive programming, and design; and focuses on planning final projects with the needs and expectations of users in mind. Using standard media development tools such as Macromedia Flash, Adobe Photoshop, Sound Forge, and Adobe Premiere, students discover the steps used to plan for and create interactive programs and develop the skills necessary to build interactive programs that effectively target and deliver information to the right people. Through exploration of educational entertainment and marketing channels, students learn the fundamentals of interactive media production and then use these tools to create unique and meaningful projects that illustrate the concepts learned. Prerequisites: a solid understanding of the Macintosh and Windows operating system environments; basic understanding of any computer-based painting or drawing program. (4 credits)
Top of page
CSCI E-19
Video Field Production (12816)
(Syllabus) (Print View)
Allyson Sherlock, MA, Digital Software Specialist, Emerson College.
Course tuition: noncredit and graduate credit $1,975. Limited enrollment.
Saturday, Sept. 16, 10 am-1 pm, 53 Church Street, Room 104.
Fall
term
Please note: this course begins earlier in the term on Sept. 16.
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)
Top of page
CSCI E-24
Video Editing and Digital Design (22659)
(Syllabus) (Print View)
Allyson Sherlock, MA, Digital Software Specialist, Emerson College.
Course tuition: noncredit and graduate credit $1,975. Limited enrollment.
Saturday, Feb. 3, 10 am-1 pm, 53 Church Street, Room 104.
Spring
term
This course serves as an introduction to the art of video postproduction. 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 their video projects, students create basic 2D graphics and interactive DVD menus using Motion and DVD Studio Pro. Prerequisite: CSCI E-19, or the equivalent. (4 credits)
Top of page
CSCI E-50a
Introduction to Computer Science Using Java I (10701)
(Website) (Print View)
Henry H. Leitner, PhD, Senior Lecturer on Computer Science, Harvard University.
Course tuition: noncredit, undergraduate, and graduate credit $1,675.
Monday, Sept. 18, 5:30-7:30 pm, Science Center, Hall A. Optional sections to be arranged.
Fall
term
Online and on-campus options. See the Distance Education website. Lecture 1
video. See course website for all other lectures.
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)
Top of page
CSCI E-50b
Introduction to Computer Science Using Java II (20659)
(Website) (Print View)
Henry H. Leitner, PhD, Senior Lecturer on Computer Science, Harvard University.
Course tuition: noncredit, undergraduate, and graduate credit $1,675.
Monday, Jan. 29, 5:30-7:30 pm, Science Center, Hall A. Optional sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. Lecture 1
video.
This is the second course in object-oriented programming methods using Java that 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)
Top of page
CSCI E-75
Programming Web Applications (22618)
(Website) (Print View)
Mr. Patrick Ohiomoba, AB, Senior Systems Administrator and Systems Architect, Initiative for Innovative Computing, Harvard University. David P. Heitmeyer, AM, Senior Software Product Architect/Engineer, iCommons, Central Administration Information Technology, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Thursday, Feb. 1, 5:30-7:30 pm, Science Center, Room 110. Optional sections to be arranged.
Spring
term
An introduction to the fundamentals of programming web applications, this course focuses on robust and scalable web application development from concept to deployment. The course begins with the development of standalone web applications and progresses into the use of established frameworks and tools, including Perl (Template Toolkit, HTML::Mason, mod_perl), Ruby (Rails), and PHP. Emphasis is on the principal concepts of web application development and how these are implemented in the different frameworks and languages. The course introduces XML web services (SOAP, XML-RPC, and REST) and covers the configuration and maintenance of specific underlying technologies (Apache, MySQL). In addition, the debugging and testing of web applications under simulated load (multi-user stress and load testing) is discussed. Prerequisites: CSCI E-50a, or the equivalent programming experience; working knowledge of HTML/XHTML (CSCI E-12). (4 credits)
Top of page
CSCI E-113
Introduction to C, Unix/Linux, and CGI Programming (10033)
(Website) (Print View)
Bruce Molay, AB, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Wednesday, Sept. 20, 7:35-9:35 pm, Science Center, Room 110. Optional sections to be arranged.
Fall
term
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)
Top of page
CSCI E-119
Data Structures (22568)
(Website) (Print View)
David G. Sullivan, PhD, Lecturer on Computer Science, Harvard University.
Course tuition: noncredit, undergraduate, and graduate credit $1,675.
Wednesday, Jan. 31, 7:35-9:35 pm, Maxwell Dworkin, Room G125. Required sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. 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), familiarity with precalculus (MATH E-10, or the equivalent). (4 credits)
Top of page
CSCI E-124
Algorithms and Data Structures (21462)
(Website) (Print View)
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. 2. See the Distance Education website. 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 Division 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)
Top of page
CSCI E-131b
Communication Protocols and Internet Architectures
Course tuition: noncredit and graduate credit $1,675.
Fall term (11353) (Website) (Print View): Leonard Evenchik, SM, Lecturer in Extension, Harvard University. Monday, Sept. 18, 7:35-9:35 pm, Science Center, Hall A. Optional sections to be arranged. Online and on-campus options. See the Distance Education website. Lecture 1 video. See course website for all other lectures.
Spring term (21387) (Website) (Print View): Leonard Evenchik, SM, Lecturer in Extension, Harvard University. Online only, beginning Jan. 29. See the Distance Education website. Optional sections to be arranged. 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; ATM; multimedia protocols for voice, data, 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)
Top of page
CSCI E-132
Advanced Topics in Data Networking Protocols and Network Architectures (21257)
(Website) (Print View)
Scott Bradner, University Technology Security Officer, Office of the Provost, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Friday, Feb. 2, 5:30-7:30 pm, Science Center, Room 110.
Spring
term
Online and on-campus options. See the Distance Education website. Lecture 1
video.
This course provides an in-depth exploration of a number of topics important in the design and operation of modern IP data networksboth corporate and Internet service provider. It is intended for people who are involved in the details of data network planning, design, or support. Topics include the architecture of the Internet, IPv4/IPv6, TCP, network management, Internet telephony, quality of service, network security, routing theory and practice, wireless networking, and MPLS. Prerequisite: a basic understanding of data networks or CSCI E-131b. (4 credits)
Top of page
CSCI E-153
Web Development Using XML (12151)
(Website) (Print View)
David P. Heitmeyer, AM, Senior Software Product Architect/Engineer, iCommons, Central Administration Information Technology, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Tuesday, Sept. 19, 5:30-7:30 pm, Emerson Hall, Room 101. Optional sections to be arranged.
Fall
term
Online and on-campus options. See the Distance Education website. 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)
Top of page
CSCI E-156
The Science of Google Search (22657)
(Print View)
Course tuition: noncredit and graduate credit $1,675.
Optional sections Tuesday, 7:35-9:35 pm.
Spring
term
*** CSCI E-156 has been CANCELLED.***
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)
Top of page
CSCI E-160
Java for Distributed Computing
Course tuition: noncredit and graduate credit $1,675.
Fall term (11838) (Website) (Print View): Charles M. Sawyer, Jr., MS, Senior Quality Assurance Engineer, Aveksa and Project Consultant, B.B. King Museum. Tuesday, Sept. 19, 7:35-9:35 pm, Science Center, Hall A. Required sections to be arranged. Online and on-campus options. See the Distance Education website. Lecture 1 video.
Spring term (22075) (Website) (Print View): Charles M. Sawyer, Jr., MS, Senior Quality Assurance Engineer, Aveksa and Project Consultant, B.B. King Museum. Online only, beginning Jan. 31. See the Distance Education website. Required sections to be arranged. 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 protocolsCommon 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)
Top of page
CSCI E-162
Distributed and Enterprise Computing (21510)
(Website) (Print View)
James Farley, MS, Principal Architect, Infosys Technologies Ltd. John G. Norman, PhD, Chief Software Architect, H3.com.
Course tuition: noncredit and graduate credit $1,675.
Friday, Feb. 2, 5:30-7:30 pm, 53 Church Street, Room L01. Optional sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. 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)
Top of page
CSCI E-166
Web Services and Service-Oriented Architecture (12815)
(Syllabus) (Print View)
Zoran B. Djordjevic, PhD, System Architect, Iron Mountain, Inc.
Course tuition: noncredit and graduate credit $1,675.
Monday, Sept. 18, 5:30-7:30 pm, Harvard Hall, Room 102. Optional sections Monday, 7:35-9:35 pm.
Fall
term
This course covers the architecture and design of web services, software components that transform the most versatile and disparate applications into cooperative distributed systems. Web services can be located by other services in UDDI registries and communicate through the standard XML-based protocol, SOAP. We discuss the role web services play in service-oriented architecture (SOA). SOA is an architectural style based on loosely coupled software agents utilizing each other's capabilities. Web services are natural construction units for SOA systems. Relevant XML and Java APIs and integration technologies (application servers, database and messaging systems) are introduced. Prerequisites: familiarity with Java and XML. (4 credits)
Top of page
CSCI E-170
Security, Privacy, and Usability (12334)
(Website) (Print View)
Scott Bradner, University Technology Security Officer, Office of the Provost, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Friday, Sept. 22, 5:30-7:30 pm, Science Center, Hall A.
Fall
term
Online and on-campus options. See the Distance Education website. 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)
Top of page
CSCI E-177
Introduction to Cryptography (12786)
(Website) (Print View)
Salil P. Vadhan, PhD, Thomas D. Cabot Associate Professor of Computer Science, Harvard University.
Course tuition: noncredit and graduate credit $1,975.
Fall
term
Online only, beginning Sept. 19. See the Distance Education website. Required sections to be arranged. Lecture 1 video. See course website for all other lectures.
This course teaches algorithms to guarantee privacy and authenticity of data during communication and computation. We cover rigorous proofs of security based on precise definitions and assumptions. Topics may include one-way functions, private-key and public-key encryption, digital signatures, pseudorandom generators, higher-level protocols such as electronic voting, and the role of cryptography in network and systems security. The recorded lectures are from the Harvard Division of Engineering and Applied Sciences course Computer Science 120. Prerequisites: CSCI E-124 or E-207, plus basic discrete probability as in CSCI E-124 or MATH E-102, with grades of B+ or higher, or the equivalents. Students must view sample online lectures before they register. (4 credits)
Top of page
CSCI E-180
Building Programs with Graphical Interfaces (22658)
(Website) (Print View)
Daniel E. Bromberg, BS, Consultant, BaseZen Consulting.
Course tuition: noncredit and graduate credit $1,675.
Tuesday, Jan. 30, 7:35-9:35 pm, 51 Brattle Street, Room 121. Required sections to be arranged.
Spring
term
Designed with the goal of skills integration, this course teaches students how to build programs with a graphical user interface (GUI) by applying computer science theory (data structures, multithreading), software engineering (object-oriented programming, messaging protocols), and human-computer interaction principles. Code examples are in Java/Swing, HTML/AJAX, and C++/QT, although advanced students may select their own toolkit. Prerequisites: fluency with basic data structures and algorithms; familiarity with object-oriented programming. (4 credits)
Top of page
CSCI E-207
Introduction to Formal Systems and Computation (12161)
(Website) (Print View)
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. 20. See the Distance Education website. Required sections to be arranged. Lecture 1 video. See course website for all other lectures.
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 Division 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)
Top of page
CSCI E-210
Algorithms at the End of the Wire (12740)
(Website) (Print View)
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. 20. See the Distance Education website. Optional sections to be arranged. Lecture 1 video.
This is an advanced, rigorous course on algorithms focusing on networks, data transmission, and search engines. We learn the science that led to the founding of Google and the science behind standard compression tools. This course also covers topics in coding and data streams. The recorded lectures are from the Harvard Division of Engineering and Applied Sciences course Computer Science 222. Prerequisites: CSCI E-124, or the equivalent, is very helpful. Students must view sample online lectures before they register. (4 credits)
Top of page
CSCI E-215
Unix/Linux Systems Programming (20034)
(Website) (Print View)
Bruce Molay, AB, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Monday, Jan. 29, 7:35-9:35 pm, Science Center, Hall A. Optional sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. 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)
Top of page
CSCI E-220
Artificial Intelligence (11420)
(Website) (Print View)
David Albert, MS, Instructional Technology Specialist.
Course tuition: noncredit and graduate credit $1,675.
Thursday, Sept. 21, 5:30-7:30 pm, Science Center, Room B-10. Required sections Thursday, 7:35-8:35 pm.
Fall
term
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)
Top of page
CSCI E-225
Object-Oriented Programming in C++ (11988)
(Syllabus) (Print View)
Kenneth J. Basye, PhD, Lecturer in Extension, Harvard University and Director, Modular Recognizer Research and Development, Nuance Communications, Inc.
Course tuition: noncredit and graduate credit $1,675.
Thursday, Sept. 21, 7:35-9:35 pm, Science Center, Room 109. Optional sections to be arranged.
Fall
term
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)
Top of page
CSCI E-230
.NET Programming in C# (12807)
(Website) (Print View)
Joseph Ficara, ASEE, Principal Software Engineer, Iron Mountain Digital.
Course tuition: noncredit and graduate credit $1,675.
Thursday, Sept. 21, 7:35-9:35 pm, Sever Hall, Room 103. Optional sections to be arranged.
Fall
term
This course provides the student with the essentials necessary to design and develop robust and secure applications using C# with .NET Framework. The student is introduced to .NET development through coverage of the essential concepts necessary to start developing .NET applications in C#. The course then moves into more advanced topics such as detailed coverage of ADO.NET, writing secure .NET applications, designing and developing multithreaded applications, Windows services in .NET, Microsoft Message Queue, consuming web services, and Windows forms development. Prerequisite: six months of object-oriented development experience. (4 credits)
Top of page
CSCI E-234
Introduction to Computer Graphics and GPU Programming (22565)
(Website) (Print View)
Hanspeter Pfister, PhD, Associate Director and Senior Research Scientist, Mitsubishi Electric Research Laboratories. Eric Chan, MS, Visiting Scientist, Mitsubishi Electric Research Laboratories.
Course tuition: noncredit and graduate credit $1,675. Limited enrollment.
Wednesday, Jan. 31, 7:35-9:35 pm, 53 Church Street, Room L01. Required sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. Lecture 1
video.
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, and the OpenGL Shading Language (GLSL) for graphics processor unit (GPU) programming. 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)
Top of page
CSCI E-237
Distributed Programming Using Microsoft .NET (22624)
(Website) (Print View)
David S. Platt, ME, President, Rolling Thunder Computing, Inc.
Course tuition: noncredit and graduate credit $1,675.
Monday, Jan. 29, 7:35-9:35 pm, 53 Church Street, Room L01. Optional sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. Lecture 1
video.
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)
Top of page
CSCI E-247/W
Software Design: Principles, Models, and Patterns (12070)
(Website) (Print View)
William B. Robinson, PhD, Lecturer in Extension, Harvard University.
Writing-intensive course. Course tuition: noncredit and graduate credit $1,675.
Tuesday, Sept. 19, 5:30-7:30 pm, Science Center, Hall A. Optional sections to be arranged.
Fall
term
Online and on-campus options. See the Distance Education website. 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. Prerequisites: CSCI E-119, or the equivalent and proficiency in Java. (4 credits)
Top of page
CSCI E-251
Principles of Operating Systems (12777)
(Website) (Print View)
James L. Frankel, PhD, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Tuesday, Sept. 19, 7:35-9:35 pm, Science Center, Room 109. Optional sections to be arranged.
Fall
term
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, experience using UNIX, or the equivalent. (4 credits)
Top of page
CSCI E-253
Developing Web-based Database Applications (12465)
(Website) (Print View)
Maria R. Garcia, ALM, Associate Professor of Graduate Studies, Franklin Pierce College.
Course tuition: noncredit and graduate credit $1,675.
Tuesday, Sept. 19, 5:30-7:30 pm, 53 Church Street, Room L01. Optional sections to be arranged.
Fall
term
Online and on-campus options. See the Distance Education website. 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 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)
Top of page
CSCI E-256
Oracle Database Administration (21245)
(Website) (Print View)
Patrick McGowan, BSEE, Manager, Database Administration, University Information Systems, Harvard University.
Course tuition: noncredit and graduate credit $1,975.
Wednesday, Jan. 31, 5:30-7:30 pm, Maxwell Dworkin, Room G125. Required sections Wednesday, 7:35-9:35 pm.
Spring
term
Online and on-campus options. See the Distance Education website. Lecture 1
video.
Students in this course are exposed to 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. 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)
Top of page
CSCI E-259
XML with Java (21701)
(Website) (Print View)
David J. Malan, PhD.
Course tuition: noncredit and graduate credit $1,675.
Wednesday, Jan. 31, 5:30-7:30 pm, Sever Hall, Room 213. Optional sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. Lecture 1
video.
This course introduces XML as a key enabling technology in Java-based enterprise applications. Students learn the fundamentals of XML and its derivatives, including DTD, SVG, XML Schema, XPath, XQuery, XSL-FO, and XSLT. Additionally, students gain experience with programmatic interfaces to XML like SAX and DOM as well as with standard APIs like JAXP and TrAX. The course introduces J2EE, including JavaServer Pages 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)
Top of page
CSCI E-268
Database and Information Management Systems (12733)
(Website) (Print View)
David G. Sullivan, PhD, Lecturer on Computer Science, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Fall
term
Online only, beginning Sept. 20. See the Distance Education website. Required sections to be arranged. Lecture 1 video.
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 scientific data collections. The recorded lectures are from the Harvard Division of Engineering and Applied Sciences course Computer Science 165. Prerequisites: CSCI E-119, or the equivalent and proficiency in Java or C. Students must view sample online lectures before they register. (4 credits)
Top of page
CSCI E-275
Software Architecture and Engineering (21908)
(Website) (Print View)
William B. Robinson, PhD, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Tuesday, Jan. 30, 5:30-7:30 pm, 53 Church Street, Room L01. Optional sections to be arranged.
Spring
term
Online and on-campus options. See the Distance Education website. 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. Prerequisites: 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)
Top of page
CSCI E-280
Machine Learning Algorithms for Data Mining (22611)
(Syllabus) (Print View)
Bhiksha Raj, PhD, Research Scientist, Mitsubishi Electric Research Laboratories. Sergei Makar-Limanov, PhD, Principal Software Engineer, CNET Networks.
Course tuition: noncredit and graduate credit $1,675.
Tuesday, Jan. 30, 5:30-7:30 pm, 51 Brattle Street, Room 123/5. Optional sections Tuesday, 7:35-8:35 pm.
Spring
term
This course presents aspects of machine learning algorithms that can be applied to real-world data mining applications, either to analyze and classify the data, or to make predictions based on it. We cover some well-known algorithms such as decision trees, boosting, bagging, and expectation maximization (EM). If time permits, we cover some of the latest techniques, such as support vector machines. Prerequisites: linear algebra (MATH E-21b) and knowledge of Java (CSCI E-119 or E-160). (4 credits)
Top of page
CSCI E-287
Computer Architecture (22612)
(Website) (Print View)
James L. Frankel, PhD, Lecturer in Extension, Harvard University.
Course tuition: noncredit and graduate credit $1,675.
Thursday, Feb. 1, 7:35-9:35 pm, Science Center, Room 109. Required sections to be arranged.
Spring
term
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 is required of all students. Prerequisites: CSCI E-119 and ENSC E-123, or the equivalents. (4 credits)
Top of page
- COMM E-180 Technical Writing
- EXPO E-510 Editing Technical Prose
- LSTU E-120 Internet and Society: Technologies and Politics of Control
- MATH E-104 Discrete Mathematics with Computer Science Applications
- MATH E-105 Groups, Graphs, and Algebraic Structures for Computing
- PHYS E-123a Laboratory Electronics: Analog Circuit Design