31
Computer Science Fall Term 2015 CSCI E- 10A Introduction to Computer Science Using Java I (14289) CSCI E- 15 Dynamic Web Applications (14291) CSCI E- 18 Web Development Using XML (14297) CSCI E- 19 Software Testing and Test-Driven Development (14803) CSCI E- 22 Data Structures (14309) CSCI E- 24 Numerical Analysis (14469) CSCI E- 26 Introduction to C, Unix/Linux Programming, and Web Interfaces (14294) CSCI E- 32 Advanced JavaScript with Node.js and AngularJS (14815) CSCI E- 33 Programming Microsoft .NET (14310) CSCI E- 34 User Experience Engineering (14557) CSCI E- 40 Communication Protocols and Internet Architectures (14296) CSCI E- 45A The Cyber World: Hardware, Software, Networks, Security, and Management (14299) CSCI E- 48 Secure Mobile Computing (14841) CSCI E- 50 Intensive Introduction to Computer Science (14290) CSCI E- 54 Concurrent Programming in Scala (14725) CSCI E- 55 Java and the Hadoop Distributed File System (14298) CSCI E- 59 Database Design and Implementation (14738) CSCI E- 60 Developing Web-Based Database Applications (14307) CSCI E- 61 Systems Programming and Machine Organization (13836) CSCI E- 71 Agile Software Development (14737) CSCI E- 81 Machine Learning and Data Mining (14728) CSCI E- 90 Cloud Computing (14300) CSCI E- 91 An Introduction to Cloud and DevOps Concepts (14799) CSCI E- 92 Principles of Operating Systems (14724) CSCI E- 97 Software Design: Principles, Models, and Patterns (14306) CSCI E- 98 Managed Runtime Environments (14531) CSCI E- 109 Data Science (14328) CSCI E- 121 Introduction to the Theory of Computation (14302) CSCI E- 165 Data Systems (14861)

Computer Science

Embed Size (px)

DESCRIPTION

meruld

Citation preview

Computer ScienceFall Term 2015CSCI E- 10A Introduction to Computer Science Using Java I (14289)CSCI E- 15 Dynamic Web Applications (14291)CSCI E- 18 Web Development Using XML (14297)CSCI E- 19 Software Testing and Test-Driven Development (14803)CSCI E- 22 Data Structures (14309)CSCI E- 24 Numerical Analysis (14469)CSCI E- 26 Introduction to C, Unix/Linux Programming, and Web Interfaces (14294)CSCI E- 32 Advanced JavaScript with Node.js and AngularJS (14815)CSCI E- 33 Programming Microsoft .NET (14310)CSCI E- 34 User Experience Engineering (14557)CSCI E- 40 Communication Protocols and Internet Architectures (14296)CSCI E- 45A The Cyber World: Hardware, Software, Networks, Security, and Management(14299)CSCI E- 48 Secure Mobile Computing (14841)CSCI E- 50 Intensive Introduction to Computer Science (14290)CSCI E- 54 Concurrent Programming in Scala (14725)CSCI E- 55 Java and the Hadoop Distributed File System (14298)CSCI E- 59 Database Design and Implementation (14738)CSCI E- 60 Developing Web-Based Database Applications (14307)CSCI E- 61 Systems Programming and Machine Organization (13836)CSCI E- 71 Agile Software Development (14737)CSCI E- 81 Machine Learning and Data Mining (14728)CSCI E- 90 Cloud Computing (14300)CSCI E- 91 An Introduction to Cloud and DevOps Concepts (14799)CSCI E- 92 Principles of Operating Systems (14724)CSCI E- 97 Software Design: Principles, Models, and Patterns (14306)CSCI E- 98 Managed Runtime Environments (14531)CSCI E- 109 Data Science (14328)CSCI E- 121 Introduction to the Theory of Computation (14302)CSCI E- 165 Data Systems (14861)Spring Term 2016CSCI E- 3 Introduction to Web Programming Using JavaScript (24095)CSCI E- 7 Introduction to Programming with Python (24555)

CSCI E- 8 Web GIS: Technologies and Applications (24031)CSCI E- 10B Introduction to Computer Science Using Java II (24027)CSCI E- 12 Fundamentals of Website Development (21144)CSCI E- 17 Medical Informatics (24035)CSCI E- 20 Discrete Mathematics for Computer Science (24032)CSCI E- 28 Unix/Linux Systems Programming (24040)CSCI E- 40 Communication Protocols and Internet Architectures (24033)CSCI E- 45B The Cyber World: Governance, Threats, Conflict, Privacy, Identity, and Commerce(24037)CSCI E- 46 Applied Network Security (24556)CSCI E- 47 Formal Methods for Information Security (24497)CSCI E- 49 Cloud Security (24557)CSCI E- 50 Intensive Introduction to Computer Science (24107)CSCI E- 55 Java and the Hadoop Distributed File System (24036)CSCI E- 56 Web Application Development with Groovy and Grails (24415)CSCI E- 58 Bioinformatics Algorithms (24039)CSCI E- 63 Big Data Analytics (24038)CSCI E- 64 Mobile and Cloud Computing (24228)CSCI E- 66 Database Systems (24046)CSCI E- 67 Oracle Database Administration (24045)CSCI E- 93 Computer Architecture (24414)CSCI E- 124 Data Structures and Algorithms (21462)CSCI E- 152 Programming Languages (23837)CSCI E- 171 Visualization (24028)CSCI E- 186 Economics and Computation (23816)CSCI E- 599 Software Engineering Capstone (24531)

CSCI E-10A Introduction to Computer Science Using Java IIntroduction to Computer Science Using Java IFall Term 2015 CRN 14289Intended 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. Students can count two of the following three courses—CSCI E-10a, CSCI E-10b, and CSCI E-50—toward a degree. They cannot count all three toward a degree.

CSCI E-15 Dynamic Web Applications

Dynamic Web ApplicationsFall Term 2015 CRN 14291This course is the next step for students who have experience with HTML/CSS and are looking to take their web programming skills to the next level with server-side web development. Websites can be relatively static mediums: a simple portfolio or a site for a local coffee shop are two examples of basic sites with hard-coded content. This format works well for presenting the same information for every visitor to the site. Web applications, however, take websites to the next level. Think about your experience with online banks, tools like Google Docs, and online stores like Amazon. These are all robust applications operating with databases and offering a personalized experience to each individual user. Over the course of the semester we cover the skills necessary to evolve simple static websites into dynamic, database-driven web applications. The following technologies are covered: object-oriented PHP using the expressive MVC framework, Laravel, basic server setup and management, version control with Git, dependency management, testing, and other modern web development practices.

CSCI E-18 Web Development Using XMLWeb Development Using XMLFall Term 2015 CRN 14297Students learn key XML technologies (XML, XQuery, XPath, XSLT, RNG, XML Schema, Schematron, DTD) used for open data exchange as well as specific XML-based presentation and publishing formats (HTML5/XHTML, SVG, RSS,

XSL-FO, DocBook, OpenDocument). In addition, the course covers topics such as XML programming APIs (DOM and SAX), native XML databases (eXistdb and BaseX), XML publishing pipelines (Apache Cocoon, XProc), and the basics of the semantic web and linked data. Using these technologies, students develop dynamic, data-driven websites that are capable of delivering content in a variety of media formats (screen, text, print, graphics) to a variety of devices for a variety of audiences.

CSCI E-19 Software Testing and Test-Driven DevelopmentSoftware Testing and Test-Driven DevelopmentFall Term 2015 CRN 14803In this course we review the traditional software testing techniques that are applicable to any software product, as well as learn techniques for testing object-oriented software and graphical user interface testing. The Agile development paradigm of test-driven development is discussed. We also discover how innovative companies are able to build testing and quality into every stage of the development process and deliver a multitude of releases with a relatively small testing organization. We practice test creation and testing techniques through discussions, individual, and group projects. Concepts covered include test cycles, testing objectives, testing in the software development process, types of software errors, reporting and analyzing software errors, problem tracking systems, test case design, testing tools, test planning; test documentation, and managing a test group.

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

CSCI E-24 Numerical AnalysisNumerical AnalysisFall Term 2015 CRN 14469When we use a calculator to compute cos(x), we are asking the machine to approximate a value. In this course, we investigate the algorithms used to compute such values. As in many other areas of computer science, we seek to find a result of desired accuracy with a minimum of effort. The course

covers root finding, solving systems of linear equations, interpolation, least squares, numerical integration and differentiation, and solving systems of differential equations. Students may have learned some techniques in calculus to approximate an area with a Riemann integral or to approximate a function with a Taylor Series. We review these techniques, and study variants that converge much faster, and are thus better suited for calculators and computers. Class work involves experimenting with different algorithms. Programming is done in MATLAB, an interactive system for exploring mathematical problems.

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

CSCI E-32 Advanced JavaScript with Node.js and AngularJSAdvanced JavaScript with Node.js and AngularJSFall Term 2015 CRN 14815Web development has changed significantly in the last ten years. Development of applications has become complex and, in most cases, mystifying to classic development. New frameworks and technologies are cropping up all the time and it's easy to get left behind. This course isn't simply about the hot new technologies, it's about being a JavaScript professional: how to work with current web development best practices and how to be a great software engineer. Topics include version control, build systems, task runners, optimization, APIs/web services, single page applications, and unit testing.

CSCI E-33 Programming Microsoft .NETProgramming Microsoft .NETFall Term 2015 CRN 14310The first half of this course covers the .NET framework in some detail. Covered topics include the type system, exceptions, garbage collection, threading, and reflection. The second half surveys the additional functionality

built on top of the .NET framework. Topics include WCF, WPF, Azure, Windows Phone, and others to be selected based on class interest and availability of guest speakers. Extensive programming homework required.

CSCI E-34 User Experience EngineeringUser Experience EngineeringFall Term 2015 CRN 14557Success in today's software marketplace requires an excellent user experience (UX). That's why all developers, architects, and managers today need to understand the basic principles of UX, even if it's not their primary job. In this course, we take an in-depth look at the foundations of an excellent UX in a platform-agnostic manner. We learn to ask and then answer the vital questions that everyone involved in software needs to consider when making every design decision; we learn to start with the user, not the toolkit. Who are our users and how do we represent them? What problems are these particular users trying to solve, and what would they consider the characteristics of a good solution? How should the user interaction flow, and how can we represent that with stories? How can we prototype and test different designs? How can we create programs to learn what users really do, instead of what they can remember doing or are willing to admit to doing? How can we measure how well we've succeeded? Rather than getting into the implementation of such elements, we focus on how one decides what to implement, and why, in order to make the user happier and more productive. For example, the web and other channels contain an enormous amount of information about how to program a color gradient or an animation. There is almost zero discussion anywhere about when to use a color gradient or animation and when not to, or why you should use them in this situation but not in that one. This course aims to correct that imbalance. Useful design tools, such as the Balsamiq mock-up editor, are discussed as

they bear on specific covered topics. Tools aimed primarily at user experience implementation, such as Microsoft Expression Blend, are not covered.

CSCI E-40 Communication Protocols and Internet ArchitecturesCommunication Protocols and Internet ArchitecturesFall Term 2015 CRN 14296Networks 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.

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

CSCI E-48 Secure Mobile ComputingSecure Mobile ComputingFall Term 2015 CRN 14841Modern technology is heavily dependent upon mobile computing technology. Mobile communication and devices have revolutionized industry and society. Secure mobile computing explores the threat landscape of mobile computing at the device, communication infrastructure, platform, and application levels. Students appraise secure mobile computing tools and techniques to implement confidentiality, integrity, and availability of mobile computing data. Students also review mobile computing communications security and infrastructure security to evaluate eavesdropping and surveillance avoidance techniques. Students explore the use of automated and manual security testing techniques to evaluate the security posture of a mobile computing device. Students specifically install, configure, and utilize a virtual lab environment using a mobile testing framework, a network protocol analyzer, a security/vulnerability scanner, and source code analysis tools.

CSCI E-54 Concurrent Programming in ScalaConcurrent Programming in ScalaFall Term 2015 CRN 14725With the end of Moore's Law on the horizon and a consequent fundamental turn toward concurrency in software engineering, a broad variety of concurrency paradigms have become increasingly popular. In addition, the

functional style of programming, which provides inherent support for concurrency, has gone mainstream in recent years. The goal of this course is to provide hands-on experience in developing concurrent programs by using the Scala programming language and its rich ecosystem of libraries and frameworks. The course exposes students to a wide array of topics, from modern hardware architectures and functional programing, to various approaches to dealing with concurrency and its constructs. We focus on actors, agents, futures and promises, and functional reactive programming. We also cover in detail the JVM memory model, threads, synchronization, and monitors. Along the way, we analyze trade-offs of each technique.

CSCI E-55 Java and the Hadoop Distributed File SystemJava and the Hadoop Distributed File SystemFall Term 2015 CRN 14298This course comprises a rigorous study of the core Java programming language followed by an inquiry into Hadoop, a framework that allows for the distributed processing of large data sets across clusters of computers The first part covers classes, packages, enums, inheritance, abstract classes, interfaces, reflection, exceptions, threads, and annotation. These common tools for Java development are discussed: JUnit, log4j, and Ant. The second part explores writing Java applications on the Hadoop Distributed File System, and using the MapReduce programming model. Networks of cluster nodes are simulated by multiple Java Virtual Machines running on a single computer. Access to separate nodes on a network is not required.

CSCI E-59 Database Design and ImplementationDatabase Design and ImplementationFall Term 2015 CRN 14738The object of this course is to teach students the general concepts of relational databases and how to design one that is anomaly free and can answer queries that satisfies its user's requests. Students learn to design, create, populate, and query a database by working with Oracle. Students also learn basic database administration skills such as creating users and granting and revoking privileges individually or collectively through roles.

CSCI E-60 Developing Web-Based Database ApplicationsDeveloping Web-Based Database ApplicationsFall Term 2015 CRN 14307Web-based applications offer the advantages of workstation productivity and ease of use together with the power and sophistication of relational database servers. This course provides the concepts and skills necessary to design and develop web-based database applications. Students build a working

database application using Oracle and a client application using ColdFusion to serve the information needs of an enterprise. Through hands-on projects, students build, populate, query, and write transactions for a relational database using SQL, and develop a client application to access their database using ColdFusion. As a final project, students build a prototype client-server application.

CSCI E-61 Systems Programming and Machine OrganizationSystems Programming and Machine OrganizationFall Term 2015 CRN 13836This course covers the fundamentals of computer systems programming, machine organization, and performance tuning. It provides a solid background in systems programming and a deep understanding of low-level machine organization and design. The course centers on C/C++ programming, with some assembly language. Topics include (but may not be limited to) program optimization, memory hierarchy, caching, virtual memory, dynamic memory management, concurrency, threads, and networking. The recorded lectures are from the Harvard John A. Paulson School of Engineering and Applied Sciences course Computer Science 61.

CSCI E-71 Agile Software DevelopmentAgile Software DevelopmentFall Term 2015 CRN 14737This course is an immersive experience with Agile software development. We study both the technical and social aspects of Agile, including pair programming, TDD, behavior-driven development, continuous delivery, refactoring, extreme programming, Scrum, Agile project management, and collaboration and cultural factors in successful software projects. Students must have and bring to class a laptop computer suitable for software development.

CSCI E-90 Cloud ComputingCloud ComputingFall Term 2015 CRN 14300Cloud computing has entered the mainstream of information technology, providing infinite or at least highly elastic scalability in delivery of enterprise applications and software as a service (SaaS). Amazon Elastic Cloud, Microsoft Azure, Google App Engine, and a few other offerings give both mature software vendors and start-ups the option to deploy their applications to a system of infinite computational power with practically no capital investment and with modest operating costs proportional to the actual use. The course examines the most important APIs used in the Amazon and Microsoft clouds. We learn how to use RESTful Web services, and cloud-based messaging and workflow services to construct new applications. We learn to migrate existing applications into the cloud, by

navigating through phases such as creation of a private cloud; attaching, in a secure fashion, the private cloud to the public cloud; and provisioning and maintaining resources in the public cloud. We deal with non-trivial issues like load balancing, caching, distributed transactions, identity and authorization management, and data encryption. We introduce Hadoop and BigData services in the cloud.

CSCI E-91 An Introduction to Cloud and DevOps ConceptsAn Introduction to Cloud and DevOps ConceptsFall Term 2015 CRN 14799We examine the definition and concepts around the ideas of DevOps. How do they relate to working in the cloud? How do they relate to Agile and ITIL concepts? We use the AWS cloud environment as the framework to examine these ideas. We examine use cases, possible architectures, automation, continuous delivery, and the AWS toolset. How does this enable and generate change in an environment? What mindset changes must occur and how would students think through this process?

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

CSCI E-3 Introduction to Web Programming Using JavaScriptIntroduction to Web Programming Using JavaScriptSpring Term 2016 CRN 24095This course provides an introduction to web development by way of the essential language and runtime environment that powers modern web

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

CSCI E-7 Introduction to Programming with PythonIntroduction to Programming with PythonSpring Term 2016 CRN 24555Python is a language with a simple syntax, and a powerful set of libraries. It is an interpreted language, with a rich programming environment, including a robust debugger and profiler. While it is easy for beginners to learn, it is widely used in many scientific areas for data exploration. This course is an introduction to the Python programming language for students without prior programming experience. We cover data types, control flow, object-oriented programming, and graphical user interface-driven applications. The examples and problems used in this course are drawn from diverse areas such as text processing, simple graphics creation and image manipulation, HTML and web programming, and genomics.

CSCI E-8 Web GIS: Technologies and ApplicationsWeb GIS: Technologies and ApplicationsSpring Term 2016 CRN 24031Web GIS has revealed its immense value and applicability to government, business, scientific research, and our daily life. This course aims to provide students with a comprehensive overview of web GIS, teach students state-of-the-art skills including ArcGIS Online Cloud GIS, ArcGIS for Server, ArcGIS Online web app templates, ArcGIS Web AppBuilder, ArcGIS API for JavaScript, HTML5, mobile GIS, and 3-D web scenes, and inspire students with real world web GIS application case studies. Access to Harvard ArcGIS server and other ArcGIS software is provided.

CSCI E-10B Introduction to Computer Science Using Java IIIntroduction to Computer Science Using Java IISpring Term 2016 CRN 24027This 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. Students can count two of the following three courses—CSCI E-10a, CSCI E-10b, and CSCI E-50—toward a degree. The recorded lectures are from the 2015 course.

CSCI E-12 Fundamentals of Website DevelopmentFundamentals of Website DevelopmentSpring Term 2016 CRN 21144This course provides a comprehensive overview of website development. Students explore the prevailing vocabulary, tools, and standards used in the field and learn how the various facets—including HTML5, XHTML, CSS, JavaScript, Ajax, multimedia, scripting languages, HTTP, clients, servers, and databases—function together in today's web environment. The course

provides a solid web development foundation, focusing on content and client-side (browser) components (HTML5, XHTML, CSS, JavaScript, multimedia), with an overview of the server-side technologies. In addition, software and services that are easily incorporated into a website (for example, maps, checkout, blogs, content management) are surveyed and discussed. Students produce an interactive website on the topic of their choice for the final project and leave the course prepared for more advanced and focused web development studies.

CSCI E-28 Unix/Linux Systems ProgrammingUnix/Linux Systems ProgrammingSpring Term 2016 CRN 24040As 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.

CSCI E-46 Applied Network SecurityApplied Network SecuritySpring Term 2016 CRN 24556This course provides a practical overview of network security and related topics. General threat classifications are discussed as they relate to the CIA triad: eavesdropping (confidentiality), man-in-the-middle (integrity), and denial-of-service (availability). Real-world attack incidents and implementations are used to tie concept to reality. Defensive technologies and techniques, including authentication/authorization, access control, segmentation, log/traffic monitoring, reputation-based security, and secure protocol (SSH, TLS, DNSSEC) usage are discussed and demonstrated. Hands-on labs and exercises are used to reinforce lectures and provide practical implementation experience.

CSCI E-55 Java and the Hadoop Distributed File SystemJava and the Hadoop Distributed File SystemSpring Term 2016 CRN 24036This course comprises a rigorous study of the core Java programming language followed by an inquiry into Hadoop, a framework that allows for the distributed processing of large data sets across clusters of computers The first part covers classes, packages, enums, inheritance, abstract classes, interfaces, reflection, exceptions, threads, and annotation. These common tools for Java development are discussed: JUnit, log4j, and Ant. The second

part explores writing Java applications on the Hadoop Distributed File System, and using the MapReduce programming model. Networks of cluster nodes are simulated by multiple Java Virtual Machines running on a single computer. Access to separate nodes on a network is not required. The recorded lectures are from the fall course.

CSCI E-56 Web Application Development with Groovy and GrailsWeb Application Development with Groovy and GrailsSpring Term 2016 CRN 24415This course provides a comprehensive overview of using the Groovy language and the Grails framework to rapidly create real-world web applications. Students learn the fundamentals of rapid application and plugin development, with an emphasis on convention-over-configuration and overall best practices, by studying design patterns (MVC, DAO, dependency injection), technologies (Ajax, REST), and frameworks (Grails, jQuery, Bootstrap). Topics include artifacts; internationalization; testing, building, and deploying; security; performance tuning; dynamic and static typing; and usability, accessibility, and mobility.

CSCI E-67 Oracle Database AdministrationOracle Database AdministrationSpring Term 2016 CRN 24045Students study the internal structure and organization of an Oracle database environment. The course presents a structured approach to planning, building, tuning, and monitoring an Oracle 12c database on an Amazon Web Services instance. Students create an Oracle database, tablespaces, user accounts, views, indices, and other objects necessary to support an application. We also examine some of the issues involved when running a large number of databases within an environment and with running large databases.

CSCI E-599 Software Engineering CapstoneSoftware Engineering CapstoneSpring Term 2016 CRN 24531This course examines how current software engineering methods approach structuring and managing software projects, from requirements gathering to production release. Formal methods in software engineering have a long history, from the older waterfall method to the current agile methods. Students collaborate in small teams to define an architectural model and a project plan, and then implement a system while practicing techniques in software engineering. They prepare a presentation for the Extension School's Master of Liberal Arts, Software Engineering faculty committee based on the course project. The early programming assignments are in Java.