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

Software Engineering: A practitioner’s Approach, by Roger S. Pressman, McGraw-Hill Science/Engineering/Math; 6 edition

 

 

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.