12 credits
MWF 11:30-12:30, BH 255A
Prerequisites: Either 15-212 or 15-213
Professor Jonathan Aldrich
aldrich+ at cs
Office hour: Tuesday 11am, Wean 8212
TA Marwan Abi-Antoun
mabianto at cs
Office hour: Thursday 3:30pm, Doherty Hall 4301-C
Schedule
SEPA readings are from Pressman, Software Engineering: A Practitioner's Approach. They are optional (since the text is optional), but may be a useful supplement to the lectures. Other (non-SEPA) readings are required. Assignments are due at the beginning of class on the day listed, unless otherwise specified in the assignment.
You are expected to keep track of the time you spend on each aspect of the course. Details (and hints on how to budget your time) are given on a
separate page.
Date
Topic
Readings
Slides
Assignment Due
Aug 29
Introduction; Software Lifecycle
SEPA 1-3
1-intro.pdf,
2-lifecycle.pdf
Aug 31
Extreme Programming
SEPA 4;
XP reading
Project Bids (project list)
Sep 2
Estimation
SEPA 23
4-estimation.pdf
Case Study Reading and Reflection
Sep 5
Labor Day -- No Class
Sep 7
Planning
SEPA 24
5-planning-1.pdf
Sep 9
Planning
6-planning-2.pdf
Extreme Programming Reading and Reflection
Sep 12
Risk Management
SEPA 25
7-announcements.pdf,
7-risk-1.pdf
Sep 14
Risk Management
8-risk-2.pdf
Sep 16
Extreme Programming 2
9-xp.pdf
Sep 19
Prototyping and Requirements
SEPA pages 51-53
10-proto.pdf
Estimation
Sep 21
Requirements Engineering
SEPA 7-8
11-req.pdf
Sep 23
Requirements Engineering
Requirements, Planning, and Risks, Risk Questionaire
Sep 26
Goal Modeling
12-goal.pdf
Prototype Plan
Sep 28
Goal Modeling
12-announcements.pdf
Sep 30
Just Enough UML
SEPA 8
14-UML.pdf
Oct 3
Prototype & Requirements Presentations
Prototype Report
Oct 5
Statecharts
Oct 7
Design, Information Hiding, coupling/cohesion
SEPA 9
17-design.pdf
Oct 10
KWIC & Design Structure Matrices
18-kwic.pdf
Iteration 1 (Sept 19-Oct 9) report
Oct 12
Design Patterns
SEPA 9
19-patterns.pdf
Requirements Modeling
Oct 14
Frameworks
20-frameworks.pdf
Iteration 2 (Oct 10-30) plan
Oct 17
Software Architecture
SEPA 10
21-architecture.pdf
Oct 19
Software Architecture
22-architecture.pdf
Oct 21
Mid-Semester Break -- No Class
Oct 24
Hoare Logic
24-hoare.pdf
Design
Oct 26
Hoare Logic, continued
25-hoare-2.pdf
Oct 28
ESC/Java
Oct 31
ESC/Java example
SimpleSet.java
Iteration 2 (Oct 10-30) report
Nov 2
Model Checking and Formal Modeling
28-model-checking.pdf
Iteration 3 (Oct 31-Nov 20) plan
Nov 4
Model Checking and Formal Modeling 2
Nov 7
Model Checking with Promela
peterson.pml
Architecture and Hoare Logic, Stack.java,StackCheck.java
Nov 9
Testing
SEPA 13-14
31-testing.pdf
Nov 11
Testing, Test Selection
32-test-prioritization.pdf
Nov 14
Code Reviews
SEPA 26.3
33-code-reviews.pdf
Model Checking
Nov 16
Analysis: PREfix
34-prefix.pdf
Nov 17
11:59pm Formal Technical Review Prep
Nov 18
Analysis: Fluid
35-fluid.pdf
Nov 21
CMMI
36-cmmi.pdf
Nov 22
11:59pm Formal Technical Review,
How to Print Line Numbers in Word
Nov 23-25
Thanksgiving Break -- No Class
Nov 28
Object-Oriented Design
SEPA 31
37-crc-design.pdf
Nov 30
Aspect-Oriented Programming
SEPA 2.3
Iteration 3 (Oct 31-Nov 20) report
Iteration 4 (Nov 21-Dec 12) plan
Dec 2
Putting it all together
Dec 5
Tool Presentations
Eclipse Pro
CodeSurfer/CodeSonar (on Blackboard)
JLint
Tool Evaluation Presentations (tool list)
Dec 7
Tool Presentations/Exam Review
Eclat
FindBugs
Exam Review
exam-review.pdf
visitor-DSM.xls
Dec 9
Final Exam
exam-topics.txt
Dec 12 1-4pm
Project Final Presentations (BH 255A)
Team 3 Team 5 Team 2
Team 4 Team 6
Dec 18
Final Project Report due 11:59pm
Bibliography
Optional textbook:
- Roger Pressman, Software Engineering: A Practitioner's Approach, 6th edition, McGraw Hill, 2005. ISBN 0-07-285318-2.
Other resources
- Kent Beck, Extreme Programming: Embrace Change
- Extreme Programming wiki web at c2.com
- Design Patterns (book)
Course Description
Software engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledge, developing software systems in the service of mankind. This course covers the fundamentals of software engineering, including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools. The course will combine a strong technical focus with a capstone project providing the opportunity to practice engineering knowledge, skills, and practices in a realistic development setting with a real client.
Course Objectives
Knowledge
- An understanding of different software processes and how to choose between them
- How to elicit requirements from a client and specify them
- Design in the large, including principled choice of a software architecture, the use of modules and interfaces to enable separate development, and design patterns.
- Understanding good coding practices, including documentation, contracts, regression tests and daily builds.
- Various quality assurance techniques, including unit testing, functional testing, and automated analysis tools.
Skills
- Working with version control, configuration management, unit/regression testing, issue tracking, and debugging tools
- Creating a project plan
- Creating and analyzing design models
- Making engineering tradeoffs
- Coping with large legacy systems and frameworks such as GUIs, EJBs, and Eclipse
Experience
- Working in a team
- Putting software process into practice
- Communicating with clients
Project
A capstone
project will be used to gain experience applying software engineering practices in a realistic development setting. Students will work in teams of 3-4 with a real client within the university. Each team will use the Extreme Programming process for all engineering tasks. The team will be responsible for eliciting a requirements specification from the client and negotiating the scope of work to be performed with the client.
Each team will then design, implement and test a software system for the client, following the chosen process. At various milestones, software process artifacts will be produced, including a requirements specification, design and architecture documents, and a test plan. These milestones will be coordinated with course lectures, so that material in the lectures will directly relate to project requirements. Teams will meet regularly with clients to get feedback on prototype systems and refine the requirements for the system. The project will culminate with delivery of the software, including associated documentation, an in-class presentation, and a post-mortem reflection on the project.
Teams will be required to use modern software development tools, including source control, configuration management, bug databases, and unit testing tools. Grading for the project will be primarily based on the degree to which each team puts into practice the software engineering knowledge, skills, and practices taught in the course. Evaluations from other members of the team and clients will also play a role in grading.
Evaluation
The approximate breakdown of grading will be as follows:
50% homework
10% participation in class
10% final exam
10% final project presentations
10% client project evaluations
10% 360-degree peer evaluations
Most of the homeworks will be directly tied to the ongoing project, including requirements specifications, design documents, test plans, etc.
首先小結一下這個周,先在才覺得,家對于一個人是多么的重要,感覺人就是在慢慢地長大,學會了很多人情世故,或許很多沒有學會,但是成長就是慢慢的一步一步的過程吧。。
從姥爺去世,到父親去世和爺爺的離世,整個家在我進入大學之后就支離破碎了,但家總是家,總是讓在外漂泊的人那么急切。今年沒有在中科院訂票,現在想來有點后悔,然后周五早晨4:30就起床了,和WCB去了北京北站排。雖然沒有買到返程票,但是買到了回家的票,還是非常開心的!回家的心情是多么的急切。然后這周六和WCB去農大西門的稻香村買了一些點心,帶給奶奶和姥姥。不知道買點什么帶給媽媽。。。在這方面自己做的實在是少之又少。對此類的事情基本不會傷心,小餅也說過我好多次了,媽媽肯定不會主動說我的,慢慢改正。這個周的周的周一到周四基本每天都在關注著買票回家的事情,中國人,每每到了年關,總是有那么一種心結。
然后聽媽媽說高辰今年期末考試考試的不錯,問他要什么,讓我幫他下游戲,然后這個周六周末在寢室,在六維上給弟弟下了一些。想起自己初二的時候,那時候紅色警戒好像正在流行,自己也是很入迷。小男孩子就是這樣子,給他下了,讓他好好玩一下吧。。
這個周工作上就是把攝像機的API給搞定了,幫HW寫了攝像機同步和讀出點數據的程序,后來去海龍去了兩天,把設備調試了,試驗還是比較成功的。然后這個周看了一回論文,定了一個總體的計劃,在接下來的時間內的任務。
然后這個周五老板在雙榆樹請吃飯,還是挺不錯的。有見到了幾個師兄師姐,他們混的都很不錯的說,都是在北京的。然后在吃飯期間,GSL師兄說到了和和老板的相處之道,其實在公司也一樣,重要的不是你的能力有多大,而是一種態度和姿態,讓大家都認為你是十分負責努力的,這一點是最重要的。往往堪大任者不是能力最好的,而是最負責任的!這一點十分重要的。所以,畢竟做研究要端正好自己的態度,現在好像經常跟師兄們玩游戲,這些東西畢竟玩玩就好,是個放松的活動。。。
周四那天給自己列了一個小目錄,其實工作還是蠻多的!
Research
1 清華綜述文章
2 LibXML Vicon文件讀寫
3 GLSL 可編程渲染管線
4 Cartwhell 系統 + 論文 Generalized Biped Walking Control
5 SigGraph 97的教程
6 腳步檢測的相關文章
Research 相關
1 SDL 的使用
2 Open Dynamic Engine ODE相關
3 Open Scence Graph OSG相關
4 Nancy Pollard Technical Animation
5 Advanced Computer Animation YinKangkang課程
6 ComputerAnimation Algorithm and Techniques
Programming相關
1 Head First Design Pattern
2 游戲開發中的物理學
3 Head First JavaScript
4 Game Engine Architecture
5 LINUX權威指南(第三版)
6 Shell腳本學習指南
7 鳥哥的Linux私房菜.基礎學習篇(第三版)
8 Programmer Should Know
9 ACM Regional | SRM
下周就要回家啦!非常激動!周一周二把老板的BliXML搞定,然后看看書,收拾東西準備回家!