CSCI.2600 Principles of Software -- Spring 2021

Instructor:  Carlos Varela
Office:  Lally 308 (x 6912)
WebEx Personal Room
Office Hours:  Mondays and Thursdays, 1:15-2:15pm; or by appointment
Meeting PlaceWebEx Meetings
Meeting Hours:  Mondays and Thursdays 2:30-4:20pm
Test Time:  Thursday 6:55-8:45pm

Co-Instructor:  Konstantin Kuzmin
Office:  AE 112
TAs: Ankita Bhaumik, Lilian Ngweta, Vipula Rawte, Jiawen Zhang.
TAs' Office: WebEx Teams
TAs' Office Hours:   Ankita Bhaumik: Wednesday 12:00-2:00pm, Tuesday 6:30-8:30 pm   Lilian Ngweta: Friday 12:00-4:00pm   Vipula Rawte: Wednesday 2:30-6:30pm   Jiawen Zhang: Tuesday 10:00-12:00pm, Wednesday 10:00-12:00pm
Mentors: Kongmin Cao, Dennis Chau, Rory Eiffe, Robin Hong, Richard Le, Zhangcheng Li, Zachary McDaniel, Ruben McWilliams, Joseph Napolitano, Emma Skantze.
Instructional Support Coordinator:  Shianne Hulbert

Home page
Submitty Home Page:
Use Submitty to submit your assignments, check your grades, and post/answer course questions in the discussion forum.
To contact the instructors, TAs, and mentors about the course, please email:  psoftstaff AT cs DOT lists DOT rpi DOT edu.

Course Description

A study of important concepts in software design, implementation, and testing. Topics include specification, abstraction with classes, design principles and patterns, testing, refactoring, the software development process, and GUI and event-driven programming. The course also introduces implementation and testing tools, including IDEs, revision control systems, and other frameworks. The overarching goal of the course is for students to learn how to write correct and maintainable software.


CSCI 1200 Data Structures and CSCI 2200 Foundations of Computer Science.

Course Themes

Software Development Tools. Reasoning about Code. Inheritance and Polymorphism. Design Patterns. GUI and Event-Driven Programming.

Learning Outcomes

When the students have successfully completed this course, they will be able to write correct and maintainable software in high-level languages. Concretely, students will be able to:

Course Contents

  1. Introduction
  2. Reasoning about Code
  3. Inheritance and Polymorphism
  4. Design Patterns

Tentative Course Syllabus

Date Topic Handouts Grade
01/25 Introduction to Principles of Software:  syllabus, schedule, tools, Java. syllabus eclipse/git ppt pdf
C++ vs Java, Eclipse, Git, Submitty--Homework 0 Due 02/05 ppt pdf hw0 6.25%
Reasoning about Code
Hoare Logic, Loops--Quiz 1 Reasoning.pdf Reasoning.pptx
Loops and Loop Invariants--Homework 1 Due 02/19 hw1 6.25%
02/11 Loops and Loop Invariants
Loops.pdf Loops.pptx
02/18 Dafny--Quiz 2 Dafny.pdf Dafny.pptx
02/22 Specifications--Homework 2 Due 03/02
Specifications.pdf Specifications.pptx gcd_notes.pdf hw2 6.25%
02/25 Specification Strength
03/01 Abstract Data Types (ADT). Specifications2.pdf Specifications2.pptx BinarySearch.dfy BinarySearchJavaAlt.dfy BinarySearchJava.dfy
03/04 Representation Invariants, Abstraction Functions--Homework 3 Due 03/16--Quiz 3 ADTs.pdf ADTs.pptx hw3 6.25%
03/08 Reasoning about ADTs. ADTsRepInvariants.pdf ADTsRepInvariants.pptx Representation exposure.pdf
03/11 Testing, Black Box Testing, White Box Testing--Exam 1 Exam1Review.pdf Exam1Review.ppt 12.5%
03/15 Exceptions--Quiz 4 ADTReasoning.pdf ADTReasoning.pptx
Identity, Equality--Homework 4 Due 03/26 hw4 6.25%
03/22 Subtype Polymorphism, Liskov Substitution Principle (LSP) Testing.pdf Testing.pptx
03/25 Subclassing in Java, Subtype Polymorphism
Identity_equality.pdf Identity_equality.pptx
03/29 Subclassing in Java, Subtype Polymorphism--Homework 5 Due 04/13--Quiz 5
SubtypePolymorphism.pdf SubtypePolymorphism.pptx hw5 marvel.csv 6.25%
04/01 Parametric Polymorphism--Exam 2.
Exam2Review.pdf Exam2Review.ppt 12.5%
Design Patterns, Dependencies.

Design Patterns
Design Patterns--Quiz 6 Generics.pdf Generics.pptx 6.25%
Antipatterns, Refactoring--Homework 6 Due 04/23 DesignPatterns.pdf DesignPatterns.pptx hw6
DesignPatterns2.pdf DesignPatterns2.pptx
Event-Driven, GUI Programming--Quiz 7

Software Process--Homework 7 Due 05/04
DesignPatterns3.pdf DesignPatterns3.pptx hw7
Usability--Quiz 8 Refactoring.pdf Refactoring.pptx
Review FinalReview.pdf FinalReview.ppt
Final Exam

Reading Material

While none of the books is required, these are all highly recommended books worth having in your bookshelf.

Java Resources


There are 8 homework assignments to be completed individually. Do not show your code to any other student and do not look at any other student's code. Do not put your code in a public directory or otherwise make it public. You are encouraged to use the Submitty Discussion Forum to post questions so that other students can also answer/see the answers. Assignments are due at 11:59pm on the due date. You have 7 late days for the entire semester without penalty with a maximum of 2 late days per assignment.

Project requirements and instructions for submitting assignments will be made available for each assignment. Projects requiring programming must include the submission of well-commented source code. All programming assignments must execute successfully on the Linux operating system installed on the Submitty system. Documented source code and separate files containing answers to questions will be required for each assignment.

There are two partial exams and one final exam, to be completed individually. All answers must be your own.

There are 8 in-class quizzes, which are to be completed individually after a brief group discussion.

Homework Assignments 50%
Partial Exams 25%
Final Exam 25%

Final letter grades will be assigned as follows:

Letter Grade Range
A [93-100]
A- [90-93)
B+ [87-90)
B [83-87)
B- [80-83)
C+ [77-80)
C [73-77)
C- [70-73)
D+ [67-70)
D [60-67)
F [0-60)

Academic Integrity

Student-teacher relationships are built on trust. For example, students must trust that teachers have made appropriate decisions about the structure and content of the courses they teach, and teachers must trust that the assignments that students turn in are their own. Acts that violate this trust undermine the educational process. The Rensselaer Handbook of Student Rights and Responsibilities and The Graduate Student Supplement define various forms of Academic Dishonesty and you should make yourself familiar with these. In this class, all assignments that are turned in for a grade must represent the student’s own work. In cases where help was received, or teamwork was allowed, a notation on the assignment should indicate your collaboration.

Violations of academic integrity may also be reported to the appropriate Dean (Dean of Students for undergraduate students or the Dean of Graduate Education for graduate students, respectively).

If you have any question concerning this policy before submitting an assignment, please ask for clarification. In addition, you can visit the following site for more information on our Academic Integrity Policy: Student Rights, Responsibilities, and Judicial Affairs..

Disability Services

Rensselaer Polytechnic Institute is committed to providing equal access to our educational programs and services for students with disabilities. If you anticipate or experience academic barriers due to a disability, please let me know immediately so that we can discuss your options. To establish reasonable accomodations, please register with THE Office of Disability Servicces for Students. After registration, make arrangements with the Director of Disability Services as soon as possible to discuss your accomodations so that they may be implmented in a timely fashion. DSS contact information:; +1-518-276-8197; 4226 Academy Hall.

Disability Services for Students

Support Services

RPInfo - contains various links for students, academic resources, support services, and safety & emergency preparedness.

Rensselaer IT Services and Support Center

Last modified: Fri Jan 22 15:47:41 EST 2021