Syllabus

Principles of Software (CSCI-2600)

 

Meetings: SAGE 3510, TF 2-3:50pm
Website: http://www.cs.rpi.edu/~milanova/csci2600

Catalog Description

 

The course is 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, GUI and event-driven programming. The course 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.

 

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

 

Learning Outcomes

 

This course teaches how to write correct and maintainable software in high-level languages.

 

Concretely, students who successfully complete the course should be able to 1) apply fundamental principles such as reasoning about code, specification, abstraction, design patterns, testing, refactoring and software process, towards building software systems, 2) demonstrate competence with modern software engineering tools such as the Eclipse IDE, the JUnit Framework, revision control, test coverage tools and others, and 3) demonstrate competence with the Java programming language and the Java libraries.

 

Optional Textbooks and Resources

 

Effective Java, Second Edition, by Joshua Bloch, Addison-Wesley, 2008.

 

Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Addison-Wesley, 1995

 

Refactoring: Improving the Design of Existing Code by Martin Fowler, Addison-Wesley, 1999

 

Java Resources:

1.    Main Java website by Oracle: http://java.com

2.    Java documentation: http://docs.oracle.com/javase/

3.    1.7 JDK: http://docs.oracle.com/javase/7/docs/api/

4.    1.8 JDK: http://docs.oracle.com/javase/8/docs/api/

5.    Java tutorial: http://docs.oracle.com/javase/tutorial/

6.    Java language specification: http://docs.oracle.com/javase/specs/

7.    Cafe au Lait: Java FAQ, News, and Resources

 

 

Quizzes

 

There are 10 in-class quizzes, which can be completed individually or in small groups.

 

Exams

 

There are two midterm exams and a final exam.

 

Homework Assignments

 

There are 10 homework assignments. Assignments are due at 2pm on the due date. You have 5 late days for the entire semester without penalty with a maximum of 2 late days per assignment. Exceptions to this policy will be allowed only for emergencies sanctioned by your class dean.

 

Grading

 

The final grade is computed as follows:

 

Quizzes – 10%

Exam 1 – 12.5%

Exam 2 – 12.5%

Final exam – 25%

Homework assignments – 40% (4% each)

Attendance and participation – 5% (extra credit)

 

Letter grade assignment (grade modifiers are subject to adjustments):

 

[94 – 105]: A

[90 – 94): 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-2016): Intellectual integrity and credibility are the foundation of all academic work. A violation of Academic Integrity policy 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 responsible for committing academic dishonesty, a student may be subject to one or both types of penalties: an academic (grade) penalty administered by the professor and/or disciplinary action through the Rensselaer judicial process described in this handbook.

 

Assignments must be completed individually. We encourage discussion, however, carrying out material (e.g., photos, writing) from a discussion is not allowed. The actual work must be your own. Submitty has advanced plagiarism detection capabilities, which we will use on every homework assignment. Excessive similarities between different submissions, including past semester submissions, will result in grade penalties for all students involved, and a referral to the Dean of Students.

 

Exams are to be completed individually, using only materials allowed by the instructor. Violators will be subject to the procedures and penalties of the judicial system outlined in the handbook. Excessive similarities between exams will result in grades of 0 for all students involved and a referral to the Dean of Students.