|
|
|
|
|
|
|
Computer Science
Distance EducationFive computer science courses can be taken for credit or noncredit via the Internet: see Distance Education.
CSCI E-1 Introduction to Personal Computers and the Internet Spring term (21295) : David Jay Malan. Tuesday 5:30-7:30 pm. Science Center A. Sections to be arranged. The Internet, World Wide Web, Java, HTML, browsers, search engines, newsreaders, e-mail, ISPs, modems, microprocessors, RAM, cache--what is it all about? This course is an introduction to computer technology and terminology currently affecting us all. Through weekly lectures and hands-on sections, we will demystify computer technology and make sense of the jargon so that students acquire a general understanding of these concepts. Back to top of page. CSCI E-5 Introduction to Applied Computer Science (21216)
A case-based introduction to ideas and examples of applied computer science. Cases will be taken from the fields of computer graphics, computer animation, computer vision, heuristic search, natural language processing, machine learning, and information retrieval. Programming will be limited to modifying distributed code. Back to top of page. CSCI E-10 Virtual Communities on the Internet (20910)
The Internet is host to millions of people who exchange e-mail, post articles to discussion groups, and work and play together in on-line environments without ever meeting. This course offers an introduction to selected virtual communities, a historical overview of the virtual community, and a chance to get involved personally with Multi-User Domains (MUDs). Lecture topics include the growing use of the World Wide Web for community building; educational uses of virtual communities; issues of virtual self-government, security, privacy, and anonymity; and intelligent agents that simulate human behavior. The course features guest lectures by founders and chroniclers of on-line communities. Back to top of page. CSCI E-12 Introduction to Website Development Spring term (21144) : David P. Heitmeyer, BS, Web Administrator, Faculty of Arts and Sciences Computer Services, Harvard University. Monday 5:30-7:30 pm. Science Center A. Sections to be arranged. This course will provide an introduction to the many facets of establishing and maintaining a website. The first part of the course will be devoted to creating and designing content for publishing on the Web. Use of HTML forms, CGI programs (in Perl), and database access will be introduced. The second part of the course will cover configuring and maintaining a web server (UNIX platform), and security issues. Issues of effectively managing a large website within an organization will be discussed. Back to top of page. CSCI E-13 Web Programming in Perl (21215)
This course gives a thorough grounding in the Perl scripting language and CGI programming, which is a major part of large web servers. Students will create web applications based on real world examples. Applications will include forms processing, database access, HTML file manipulation, authentication, and web clients. Back to top of page. CSCI E-14 Understanding and Developing Multimedia Spring term (21366) : Marc Johnson, AB, Principal, Marcato Multimedia. Monday 7:35-9:35 pm. 53a Church Street 1. Sections to be arranged. Creating effective interactive experiences that combine sound, graphics, text, video, and animation is a process that involves skill, planning, and practice. In this course, students will develop the skills necessary for producing interactive multimedia projects using professional authoring tools, graphics programs, sound, and video editing packages. Software applications include Macromedia Director, SoundEdit 16, Adobe Photoshop, and Premiere. Issues regarding communicating effectively through interactivity, design concepts, computer configuration, performance, single versus multi-platform use and development, and file size will be examined. Students will produce a self-running interactive multimedia presentation that demonstrates their understanding of production from concept through completion. Back to top of page. CSCI E-17 Advanced Topics in Multimedia Development (11516)
This course explores intermediate to advanced topics in the multimedia development process. Students will learn about interactivity and programming issues, including object-oriented and modular project design. The design, creation, and delivery of multimedia across a variety of platforms and delivery systems, including CD-ROM and the World Wide Web, will be covered. Students will develop solutions involving user interface design, project architecture, text handling, color palette management, animation, and digital audio and video. Other topics include QuickTime VR, Shockwave, and database tools. Back to top of page. CSCI E-23 Digital Libraries and the Internet (11466)
We will study file formats, image compression, network communication, and image and text search methods applied to digital libraries. Text, pictures, music, and video collections will be covered. Emphasis will be on keyword indexing, picture search algorithms, and picture reproduction. Copyright issues will be surveyed. The use of digital libraries in the context of remote education will be discussed and analyzed. Back to top of page. CSCI E-50a Introduction to Computer Science Using C++, I Spring term (20913) : Stanley J. Eigen, PhD, Associate Professor of Mathematics, Northeastern University. Monday 7:35-9:35 pm. Science Center D. Sections to be arranged. Intended for students with no previous programming background, this course introduces problem-solving methods and algorithm development using the high-level programming language C++. Students will learn how to design, code, debug, and document programs using techniques of good programming style in both mainframe and microcomputer environments. Related topics include the basic aspects of recursion, parameter passing, file I/O, classes, and functional decomposition to enable top-down design. Some applications will be chosen for their relevance to more advanced coursework in computer science, while others will involve nonscientific and business-related areas. Back to top of page. CSCI E-50b Introduction to Computer Science Using C++, II Spring term (20659) : Henry H. Leitner, PhD, Senior Lecturer on Computer Science, Harvard University. Monday 5:30-7:30 pm. Science Center C. Sections to be arranged. An introduction to object-oriented programming (OOP) and abstract data types (ADTs) using C++ in both microcomputer and mainframe environments. Begins with simple data structures using classes, objects, and overloaded operators and functions. Continues with strings, multidimensional arrays, and pointers. An introduction to RISC machine architecture and the representation of numeric, structured, and symbolic data. Additional topics include simulation, recursion, templates, and the use of various internet tools such as Gopher, Telnet, and web browsers. Back to top of page. CSCI E-60 Introduction to Programming Using Java (11419)
Intended for students with no previous computer programming background, this course introduces problem-solving methods and algorithm development using the high-level programming language Java. Students will learn how to design, code, debug, and document programs using techniques of good programming. Related topics include the basic aspects of recursion, parameter passing, and decomposition problems to obtain an object-oriented solution. Problem sets will include applications and applets (programs embedded within a web browser). Back to top of page. CSCI E-95 Advanced Java Programming (11467)
Advanced Java concepts including multi-threading, synchronization, networking, JPBC, Java Beans, and writing efficient Java programs. Students will act as a single team to produce a system utilizing all of these concepts, in addition to learning software engineering techniques and group dynamics. Back to top of page. CSCI E-113 Introduction to C, UNIX, and CGI Programming (10033)
Designed for students with some programming experience, this course provides a rigorous introduction to writing and using software tools in the UNIX programming environment and on the World Wide Web. The curriculum covers the C programming language, UNIX shell scripts, HTML, and CGI programming. Topics include text processing, memory management, files and pipes, processes and protocols. Students will write programs to analyze data and generate reports, use shell scripts to combine tools into applications and interactive web pages, and use CGI to provide web access to databases. Back to top of page. CSCI E-119 Data Structures (10034)
A survey of the fundamental data structures for information processing: strings, sets, arrays, sequential files, stacks, queues, linked lists, trees (including AVL and B-trees), and graphs. The course will explore the implementation of these structures and study their use in solving complex problems. Applications include topics such as sorting and searching, record management, and backtracking algorithms. The Java programming language will be used to demonstrate the algorithms discussed, though assignments will be accepted in Java, C, or C++. Java will be introduced in the first two weeks. Key notions of object-oriented programming, including encapsulation and abstract data types, will be emphasized. Back to top of page. CSCI E-123 Laboratory Electronics: Digital Circuit Design (20974)
This course forms the digital half of a two-semester sequence that provides a lab-intensive survey of electronics (the analog half of the sequence is PHYS E-123a). It covers digital design, emphasizing microprocessors and microcontrollers as well as PLDs (programmable logic devices, often called PALs and GALs), and provides an understanding of the fundamentals of computer innards and a set of practical skills useful in the application of computers. Students will apply PLDs first in implementing an interface card for an IBM PC. After examining analog-digital interfacing issues, students will build a microcomputer from the chip level. They will apply this computer first to assigned tasks, later to individual projects. Each student also will work with a single-chip microcontroller development system which allows one to implement designs outside class time. Each meeting includes a laboratory session. Back to top of page. CSCI E-129 Communication Systems and Technology (21330)
An introduction to telecommunications that traces the development of various technical means for communicating and the evolution of our conceptual understanding of communication processes. General topics for discussion include: representations of information encoding; measures of information content; characteristics of visual and auditory information; spectral analysis and processing of signals; information transmission with and without wires. Illustrative case studies include: radio and television broadcasting; cellular telephony and PCS; communication satellites; fiber optical communication; audio, video, and data recording; telephone and data networks. Back to top of page. CSCI E-131b Communication Protocols and Internet Architectures Spring term (21387) : Leonard Evenchik, MS, Lecturer in Extension, Harvard University. This course is available only on the Internet. Students may visit the first lecture at: http://lab.dce.harvard.edu/extension/cscie131b. 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 will study various protocols, including TCP/IP, WWW/HTTP, ATM, e-mail protocols, client/server protocols, and the IEEE 802 LAN protocol suite. In each case, the protocol's functions and the underlying reference model will be discussed. LAN architecture and design, internetworking using bridges and routers, and the implementation of ATM and frame relay networks will be presented. The course also will discuss new areas of work, including enterprise network management and broad-band/gigabit networks. Back to top of page. CSCI E-132 Advanced Topics in Data Networking Protocols and Network Architectures (21257)
This course provides in-depth exploration of a number of topics important in the design and operation of modern data networks. It is intended for people who will be involved in the details of data network planning, design, or support. Topics will include TCP/IP, IPv6 (the next generation of IP), SNMP, network architectures, quality of service, network security, performance testing of network devices, routing theory and practice, and the architecture and operation of routers, frame switches, and ATM switches. Back to top of page. CSCI E-141 Developing Windows Applications Using Visual C++ (11511)
The theme of the course is that Windows application programs that require a user interface are most efficiently developed by taking advantage of the Microsoft Foundation Classes and the wizards of Visual C++ to supply all code that is not unique to the application. From the start, students will develop interesting applications with a professional-looking user interface: first dialog-based applications, then property sheets and wizards with multiple dialogs, and finally document-view applications. Key concepts of Windows and C++ will be introduced as appropriate. Back to top of page. CSCI E-160 Java for Distributed Computing (21331)
This course comprises a comprehensive study of the Java programming language, followed by an inquiry into its most promising area of application, building distributed systems. The first part will cover classes and inheritance, abstract classes, interfaces, exceptions, threads, packages, events, reflection, Java Beans, and javadoc (the tool for extracting documentation from code into HTML files). 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 Remote Method Invocation (RMI), will be covered. Back to top of page. CSCI E-207 Theory of Computation and Its Applications (11323)
The fundamental concepts of the theory of automata, formal languages, computability, and computational complexity, and their relevance to the practice of computation. Practical applications include the parsing of natural and artificial languages, generative mechanisms in computer graphics, and identifying and coping with computationally hard problems. Homework assignments will include some programming assignments. Back to top of page. CSCI E-215 UNIX Systems Programming (20034)
An introduction to the fundamental structure and services of the UNIX operating system. The 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 an internet database client. Back to top of page. CSCI E-218 Programming COM+, COM, ActiveX, and OLE (20483)
This course covers writing and using software components that implement the COM+ and COM standards for binary software reusability. Covered topics include introduction to COM, custom COM interfaces, ActiveX controls, automation, type libraries, threading, DCOM, monikers, and the ATL. Weekly programming assignments and extensive term project required. Students are urged to have their own Windows development environments. More information is available at http://www.rollthunder.com/harvard.htm. Back to top of page. CSCI E-220 Artificial Intelligence (11420)
Artificial Intelligence (AI) concerns the development of computer systems that appear to behave with some degree of human intelligence. This survey course covers the major topics in AI: search techniques, natural language understanding, knowledge representation, theorem proving, and computer vision. Planning, learning, and expert systems will be included if time permits. The LISP programming language will be introduced and used for the programming assignments. No prior experience with LISP is assumed. Back to top of page. CSCI E-225 Object Oriented Programming in C++ (21381)
This course is designed to enable C programmers to become proficient in C++. Topics include class definitions, overloading functions and operators, friend functions, nested classes, single and multiple inheritance, virtual functions and abstract classes, templates, and exceptions. Useful applications such as iterators, smart pointers, and reference counting also will be discussed. Back to top of page. CSCI E-229 Practical User-Interface Design (11418)
This course establishes a practical and effective process for accomplishing good user-interface design. Students will be able to improve the quality of their interface designs without a significant increase in cost or development time. Topics discussed will include user modeling, task analysis, metaphors, multimedia, affordances and feedback, direct manipulation, color and sound, rapid prototyping, reusable components, GUI standards, website design, and usability testing. Students will complete a series of exercises that will result in a working software prototype of a complex design solution using Microsoft Visual Basic. Back to top of page. CSCI E-247 Object Paradigms: Design Patterns, C++, and Java (21095)
Object-oriented languages enable reuse of objects through class libraries distributed at the source or the binary level. Higher-level design patterns enable reuse of designs for structuring object systems. In this course, students will learn about creational, structural, and behavioral design patterns, and techniques for implementing these patterns in C++. In addition, students will learn the basics of programming in Java, a language that has emerged as a strong competitor to C++ for object programming. Back to top of page. CSCI E-248 Developing Real-Time Object-Oriented Software (11531)
The continued use of digital computers in commercial products has generated a steady demand for real-time software developers. This course provides a systematic approach for developing object-oriented software for real-time systems. It introduces students to fundamental real-time concepts, such as concurrency, synchronization, communication, interrupt handling, and timing. Object-oriented analysis and design methods are presented as the course addresses modeling and implementation. The course also introduces the students to UML, a recently adopted standard notation for object-oriented analysis and design. Modeling emphasis will be on Use-Cases and State Diagrams. Implementation considerations will include language support for real-time, problems of embedded systems, and testing. Back to top of page. CSCI E-251 Principles of Operating Systems (21219)
This course examines the role of operating systems: process synchronization and scheduling; memory management including swapping, paging, and segmentation; file management; protection and security; input/output techniques and resource allocation; deadlock avoidance; and operating system case studies. Back to top of page. CSCI E-253 Introduction to Database Systems and Client/Server Computing (10044)
Client/server computing promises the advantages of workstation productivity and ease of use together with the power and sophistication of relational database servers. The course will begin with a discussion of database design and the relational database model. As a practical example of a relational database management system, students will build, populate, query, and write transactions for a relational database using SQL and Oracle. The course will then focus on application development tools. Powerbuilder will be used to build client/server applications featuring a graphical user interface. Other application development tools will be used to demonstrate web application development. Students will be expected to build a prototype client/server application as a final project. This course is an introduction to the full range of topics needed to build today's client/server applications and is intended for data-processing professionals. Students may not count both CSCI E-253 and CSS-412 toward a Certificate in Applied Sciences. Back to top of page. CSCI E-254 Oracle: SQL*Plus and PL/SQL Coding (11357)
An in-depth course teaching data access and manipulation within an Oracle relational database utilizing a structured query language (SQL). Students are taught the concepts of SQL and will learn both Oracle's proprietary SQL*Plus interface and its procedural language, PL/SQL. Data manipulation utilizing structured query protocols will be covered exhaustively. This course culminates in a group project in which the SQL concepts taught are implemented in procedures, functions, and triggers written in PL/SQL. This course is for application developers and system integrators and expects students to have a working knowledge of ER diagrams, normalization, and integrity constraints. Back to top of page. CSCI E-256 Oracle Database Administration (21245)
Participants will be introduced to Oracle 8 architecture; learn key tasks and functions to plan, monitor, and manage an Oracle database; and develop a proactive approach to administering the Oracle environment. Back to top of page. CSCI E-257 Intranets, Extranets, and Web-Based Application Development (21368)
Web-based applications that provide easy access to corporate databases have become one of the most exciting new development areas in information technology. Through the use of browser front ends, developers are no longer constrained by platform-specific dependencies and are free to concentrate on the application itself. This course will utilize a rapid application development tool (such as Tango Enterprise Development Studio) to explore the design, development, and implementation of database-integrated web applications. Students will learn to develop powerful and flexible applications using best practice design techniques. Topics will include a general review of SQL and HTML, query development and optimization, error handling, flow control, managing execution state, dynamic page generation, modifying database content, and controlling access. Back to top of page. CSCI E-258 Client/Server Networks and Distributed Systems (21083)
The development of inexpensive workstations and high-speed networks has made it possible to create systems based upon the cooperation of many autonomous computers. This course studies network services and the applications that are built upon them. Lectures will alternately discuss high-level design and current programming interfaces. The students will learn about design trade-offs in distributed systems and write programs for TCP/IP networks. We will implement servers and clients for typical network services using the BSD sockets interface. We will study the art of writing robust server and client software. The protocols covered in lecture include ARP, ICMP, RARP, and BootP Booting Protocols for X-workstations, FTP and TFTP File Transfer Protocols, NFS and AFS File Service Protocols, RPC and CORBA, and recent efforts to increase the throughput of TCP. The course will include a discussion of the World Wide Web protocols HTTP and HTML and the use of Java to make web client applications. Back to top of page.Related Courses
|
||
|
|
Copyright © 1999 Harvard Extension School. All rights reserved.
Comments. Last modified Tue, Feb 23, 1999 |
||