20110117-20110123
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.
- 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.
- 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
- 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搞定,然后看看书,收拾东西准备回家!