EE 461L Software Engineering and Design Laboratory: Miryung Kim
EE 461L Software Engineering and Design Laboratory: Miryung Kim
EE 461L Software Engineering and Design Laboratory: Miryung Kim
Activities
Course Description
This course focuses on providing hands-on experience in designing and developing large-scale software systems with emphasis on the use of automated analysis tools
and techniques that enable large-scale software development. Students will generate concrete software engineering artifacts at all stages of the software life-cycle.
Design principles and methods for large-scale software system development; design and modeling tools; collaborative development environment; object-oriented
design and analysis; design patterns and refactoring; integration and testing tools; debugger and bug-finder; program comprehension; unit testing & regression testing;
program verification; static and dynamic program analysis.
Three lecture hours and three laboratory hours a week for one semester.
Pre-requisite: EE422C (or EE322C) or Computer Science 336 with a grade of at least C-; credit with a grade of at least C- or registration for EE 360C or Computer
Science 357. (Students may take 360C concurrently with 461L)
Course Objectives
The goal of this course is to teach practical software development methods and tools in the context of developing a software system with other students in
collaboration. Practical development tools include
Analysis tools (e.g., debuggers, profilers, automated bug-finders, style-checkers, program differencing tools, program investigation tools)
Construction tools (e.g., compilation managers and build scripts)
Tool support for collaboration (e.g., version control systems and problem report databases)
Design tools (e.g. UML-based modeling tool)
GNU/Linux operating system environment, command-line utilities, bash shell scripting
Practical software design, construction, and evolution methods include
Object-oriented design techniques such as design patterns
Refactoring
Unit testing and regression testing, test coverage and test generation
Hoare logic, preconditions, post-conditions, and loop invariants
Basic static and dynamic program analysis: data flow analysis, program slicing, delta debugging, change impact analysis, regression test selection etc
Grading
75% Laboratory
25% projects
a new feature proposal and presentation 7%
a midpoint implementation and testing progress report and presentation 8%
a final demonstration and presentation 10%
15% tool tutorials
15% programming/report assignments
15% quizzes
5% reading assignment
20% Exam
5% Attendance (taken at random 5 days)
Grading Scheme
Reading assignment grading scheme
3 pt (excellent writing, clear and concise, demonstrating understanding of the key concepts of the paper, within a word limit, ideas presented in your own
words, and some evidence that the paper has been considered in the context of larger issues and themes of the course.)
2 pt (demonstrating understanding of the key concepts of the paper, and ideas presented in your own words.)
1 pt (shallow, minimally-sufficient, or needlessly wordy. Key concepts misunderstood or missing. Authors words echoed back to me with little effort to
reinterpret or paraphrase.)
0 pt (late, incomplete, or never submitted at all.)
Here is a guideline on how to read research papers and write paper reviews by Bill Griswold.
programming assignment, project report and presentation grading scheme
3 pt (excellent design and implementation, selection of a task that is highly intellectually challenging, creative, concise yet comprehensive writing, nearly
perfect answers, beautifully written and verbally communicated, eloquent presentation within a time limit)
2 pt (demonstrating understanding of the key concepts, mostly correct answers, i.e., >70%, selection of a intellectually challenging project topic, well
written, good verbal presentation, well practiced presentation within a time limit)
1 pt (shallow, minimally sufficient, or needlessly wordy, key concepts misunderstood or missing, selection of easy project tasks, poor written and verbal
communication, presentation over time, not following specified formats)
0 pt (late, incomplete, or never submitted at all.)
Your letter grade assignment is not based on an absolute score. It is based on the performance of an individual in relation to the entire class. For example,
getting a total score of 80 does not guarantee B in this class and getting a total score of 70 could still provide B in this class. Generally speaking, the top 30% of
the class may receive A or A-, the next 40% of the class may receive B+, B0, or B-, and the bottom 30% of the class may receive C+, C0, C-, D or F. The
instructor reserves a right to modify the grading scheme.
Course Organization
As a four credit laboratory course, the class time will be organized around three hours of lecture per week, used to introduce the software engineering techniques and
tools central to the course. An additional three hours of laboratory time per week will be used for tool tutorials, assignments, and projects. Quizzes will be done in
lectures.
Lectures (T/TH)
Laboratory
Tool Tutorials
Week 1
(8/30)
Week 2
(9/4,
9/6)
Lecture 1. Overview
Lecture 2. Collaborative Software Development
Version Control System)
Version Merging and Conflict Resolution
Problem Report Database
Week 3
(9/11,
9/13)
Week 4
(9/18,
9/20)
Class Presentations.
Week 6
(10/2,
10/4)
Week 7
(10/9,
10/11)
Week 8
(10/16,
10/18)
Week 9
(10/23,
10/25)
Week 10
Continuation on Test Coverage, Test Generation, and
(10/30,
Regression Test Selection
11/1)
Lecture 15. Build Management and Documentation,
Week 11 ANT, JAVADOC
(11/6,
Lecture 16. Debugging and Eclipse Debugger, GDB,
11/8)
DDD, Delta Debugging
TA office hours
Week 12
(11/13,
Class Presentations and Demo
11/15)
Why?
Project Part B. New Feature Implementation Progress. Maximum 5 Slides in
PPT/PDF.
Maximum 5 pages report in Word/PDF (Due: Tuesday, 12:29PM)
User Interfaces: Current Snapshots
Description of Important APIs
Test Scenarios and Test cases in JUnit
Submit a hard copy report in class. Please also submit an electronic copy and code to
Blackboard.
Week 13
Lecture 18. Hoare Logic, Loop Invariant,
(11/20,
Lecture 19. Data Flow Analysis, Program Slicing
11/22)
Week 15
(12/4,
Class Presentations and Demo
12/6)
Laboratory Projects
The main focus of the project is to learn how to extend a large scale system. Students will propose a new feature, identify relevant parts of the system for extension
through reverse engineering and extend its current design, implement and test the changes, and demo their working implementation in class. The project assignments
are done in teams of four students. If a team implements a feature that already exists or is very similar to an existing feature, it will be considered as plagiarism. It is
each team's responsibility to demonstrate that the proposed feature is new, does not exist in any version of the project base, and a unique creation of the team.
Class Policy
Class starts 12:30 pm sharp. If a student is more than 5 minutes late (12:35pm), the student will NOT be allowed to enter the class room. Students who have sent
at least 24 hours of advance notice to an instructor via email and have received an explicit approval may be exempt from this rule.
Quizzes start in the beginning of the class. If the student is not present in the class room at 12:29PM, the student will NOT be given an opportunity to take
quizzes.
Assignments will be due in the beginning of the class. If the student does not hand in his or her assignment to a TA or an instructor by 12:29PM, the assignments
will NOT be accepted.
There is no late policy for assignments, projects, quizzes, and exams. There's one immunity for missing weekly labs.
Class announcements will be made through Piazza. Not every class announcement will be made available via electronic means. If a student misses a class, it is
the student's responsibility to catch up with announcements and materials covered in the class.
Students may use Assembla for version control and project management. Students must provide a read permission to their Assembla project websites.
Software Environment
Students are encouraged to use their personal laptops. It is a student's responsibility to install required software and ensure that it is working correctly. Students are
strongly encouraged to install all necessary software systems and environments in the beginning of the class to ensure timely progress of weekly labs, assignments, and
projects. If a student chooses to use software systems that are not endorsed by the teaching team and, and as a result, if this makes it inconvenient or unable for the
teaching team to grade his or her assignments, the student may not receive any score for the assignments.
Unix or Linux installation for BASH shell scripting and running Unix commands, or MacOS with X11 or Terminal, or Cygwin installation for Windows OS;
Subversion Client installation or Subclipse Eclipse plug-in; Account creation in Assembla and Piazza; Eclipse Classic 3.7.1 or later versions of Eclipse for Plug-In
development; ArgoUML or other UML diagram software systems; JUnit; Ant; Eclipse debugger; gdb; FindBug and Java 6 or later versions.
construct and evolve a large-scale software system; this course will make our undergraduate students attractive to software engineering industry.
(3) Students will learn about and gain experience in generating software engineering artifacts that can clearly and concisely communicate design intent and realization.
(4) Students will be naturally introduced to software engineering research, in particular automated analyses and development tools. This class will also discuss advances
in development tools and analyses from a software engineering researcher's perspective.
Textbooks