Web Enterprise Computing (All You Ever Wanted to Know about How to Build Large-Scale Software, with Emphasis on Web Serving and Analytics) 4190.418A Fall 2014
Seoul National University
Announcements 9/1: Project Proposal due 9/12 11:59PM. 9/3: Makeup class on 9/16 (Tue) 6:30-8:30PM 9/15: Makeup class on 9/23 (Tue) 6:30 - 8:30 PM 9/17: Project team formation finished. The team list is on the ETL class board. 9/20: Project requirements and specification due 10/7 (Tue) 6PM Individual warm-up project due 10/12 (Sun) 6PM 9/22: Each team should send <team name, repo name, github ids> to wec-staff at cmslab.snu.ac.kr 9/30: - Project poster session : 11AM - 1PM 12/15 (Mon)
- Project final report due 6PM 12/13 (Sat)
10/13: Warm-up programming assignment #1 scores posted in ETL
Goal This is an "experimental" hands-on course on large-scale software systems, with emphasis on web serving and analytics running in the cloud. How can companies like Amazon, Google, and Microsoft build software that serves a lot of customers much better than other companies? Building large software systems that actually work is notoriously hard. This course covers techniques for dealing with the complexity of software systems. We will focus on the technology of software engineering for the individual and small team. Topics will include, among others, abstraction, specifications, principles of design and software architecture, testing, debugging, static analysis, and version control. The students are expected to apply the theory to systems in practice by working on group project(s) in the areas of web serving and analytics.
Time
MW 11:00AM-12:15PM
Location
Bldg. 302, Rm. 106
Staff
Instructor: Byung-Gon Chun
TAs: Taegeon Um, Youngseok Yang E-mail: wec-staff at cmslab.snu.ac.kr
Course materials
There is no required textbook in this class.
If you want to read more about the topics covered in the class, I recommend to read the following books. - "Engineering Software as a Service: An Agile Approach Using Cloud Computing", by Armando Fox and David Patterson
- “Software Engineering. A Practitioner’s Approach (6th ed.) ”, by Roger Pressman
- "Code Complete”, by Steve McConnell
- "Design Patterns: Elements of Reusable Object-Oriented Software”, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
- “Extreme Software Engineering. A Hands-On Approach”, by Daniel H. Steinberg, Daniel W. Palmer
Evaluation (TBD)
- Class participation : 10%
- Exam (1 exam): 10%
- Programming assignments (2 assignments): 20%
- Class project(s) : 60%
Syllabus (Tentative schedule)
- Week 1
- M - Introduction, Syllabus
- W - Software Engineering Introduction
- Week 2 Thanksgiving days (no class) - project proposal due 9/12 11:59PM
- Week 3
- M - Software Development Process (Agile process, Extreme programming)
- W - Project proposal discussion and voting; team formation end
- Week 4: Warm-up (individual) project assignment out
- M - Working in Teams (Version Control: github), choice of tools to use
- T - Make-up class: Web app architecture, Model view controller
- W - Web app architecture, Requirements and Specifications
- Week 5
- M - Requirements and Specifications, UML
- W - Requirements and Specifications, BDD
- Week 6 (10/6 - 10/10) (OOT) (10/12 Sun: Warm-up project due): Project specification
- M - Favorite development framework; Warm-up project discussion
- W - Favorite development framework; Warm-up project discussion
- Week 7:
- M - Test-Driven Development
- W - Testing Practice: Unit Testing, Functional Testing
- Week 8
- M - Guest lecture : MetaSync
- W - Legacy Code Refactoring
- Week 9
- M - Design Patterns
- W - Design Patterns
- Week 10
- M - Presentation, Design Patterns
- W - Design Patterns
- Week 11
- M - Operations: Deployment, Availability & Responsiveness, CI, Feature flags, Monitoring
- W - Operations: Caching, Abusive Queries & Indices, Security, Dev/Ops Wrapup
- Week 12
- M - Presentation; Operations
- W - Guest lecture: Security
- Week 13
- M - Midterm exam
- W - Advanced topics - Big Data, Scalable Cloud Services (AWS, Azure)
- Week 14
- M - Presentation, Advanced topics
- W - Advanced topics, Testing another team’s project
- Week 15: Final project report due
- M - Advanced topics
- W - Advanced topics
- Week 16
- Final project poster session (including demo)
Note. Potential topics to cover: client-side technology, server-side technology
Project schedules
- Project Proposal - 1-2 page project description [done]
- Project Bidding - proposals selected by the staff, bidding who want to work on the topic [done]
- Project Requirements and Specification
- Warmup Project - Frontend, Backend using a framework of your choice
- Main Project
- Track 1 - Frontend, Backend (Serving + Analytics); Track 2 - Backend-heavy (new Backend systems)
- Steps
- Milestone 1
- Milestone 2
- Milestone 3
- Milestone 4, Testing another team’s project
- Final presentation
Frameworks and Languages for Projects
Project teams have freedom to choose the programming language and framework for building their project.
Front-end
The front-end for your project will run either in a browser, or as a native app on a mobile platform (Android or iOS). The following frameworks are your choices:
-
HTML5/Javascript
-
iOS (Objective C)
-
Android (Java)
Back-end serving
The back-end of your project will run on a server in the Amazon EC2 or on Heroku. It is likely that it will use a database (Mongo, MySQL, etc.) and a model-view-controller architecture. The following frameworks are your choices:
-
Django/Python
-
Ruby/Rails
-
node.js
-
Spring/Java
Back-end analytics
|
|