Syllabus
Software
Engineering II (CSCI-6961/ECSE-6780)
Meetings: CARNEG 201, MTh 4-5:20pm
Website: http://www.cs.rpi.edu/~milanova/csci6961
Brief
Course Description
The primary topic of the course is program analysis and its applications to software engineering tasks such as testing, refactoring, debugging
and verification, and reasoning about security of information flow.
Prerequisite: Introductory Programming Languages or Software
Engineering. Programming experience, preferably with an object-oriented
language such as Java, C++ or C#.
Learning
Outcomes
The goal of this course is to introduce students to program
analysis and its many applications to software engineering, particularly in
improving software quality and software productivity.
Concretely, students who successfully complete the course should
be able to 1) understand and apply program analysis techniques such as dataflow
analysis and type-based analysis, 2) implement program analysis for Java, 3)
understand and apply software testing techniques such as black-box testing and
white-box testing, 4) understand and apply refactoring techniques, 5)
demonstrate competence across programming paradigms by writing programs in Java
and Javascript.
No
Required Textbook
Papers (usually publicly
available online), lecture notes and handouts will be assigned throughout the
course.
Optional
Textbooks
Principles of Program Analysis by Flemming
Nielson, by Flemming
Nielson, Hanne Riis Nielson, and Chris Hankin,
Springer, 1999
Compilers: Principles, Techniques and
Tools, by Alfred Aho,
Monica Lam, Ravi Sethi, and Jeffrey Ullman (the
Dragon Book), Addison-Wesley, 2007
Assignments
and Project
There
are about 5-6 assignments, which will be written homeworks
or small programming exercises. In addition, there is one larger programming
project, which is broken into 4-5 phases. All assignments are individual. Assignments are due on the
due date specified and will be penalized 10% for each day late. If you have an
excuse for an extension, please, contact the instructor in advance!
Exam
There
is one take-home midterm exam.
Presentation
Each
student will present one technical paper from a reading list, which will be
made available later in the semester.
Grading
Each
exam, homework and phase of the programming project will be assigned a
numerical grade out of 100. Attendance and participation credit will be out of
100 as well. The final grade will be computed according to the formula:
Assignments
– 30%
Project
– 30%
Take-home
midterm – 20%
Presentation
– 15%
Attendance
and participation – 10% (5% extra credit)
Letter
grade assignment (grade modifiers are subject to adjustments):
[92
– 105]: A
[90
– 92): A-
[88
– 90): B+
[82
– 88): B
[80
– 82): B-
[78
– 80): C+
[72
– 78): C
[70
– 72): C-
[60
– 70): D
[0
– 60): F.
Academic
Integrity
From The Rensselaer Handbook of Student Rights and Responsibilities
(2012-2014):
Intellectual integrity and credibility are the foundation of all academic work.
Academic dishonesty is, by definition, considered a flagrant offense to the
educational process. It is taken seriously by students, faculty, and Rensselaer
and will be addressed in an effective manner.
If found in violation of academic dishonesty policy, students may
be subject to two types of penalties: the instructor administers an academic
(grade) penalty, and the student may be subject to the procedures and penalties
of the student judicial system outlined in this
handbook.
All assignments as well as the take home exam should be completed
individually. Excessive similarities between submissions will result in grade
penalties for all students involved, and the students may be subject to
additional penalties.