CSCI 250 - Scalable Software Design and Development

Spring 2017

Course Overview:
This course introduces the skills needed for writing large programs (on the order of 1000+ lines) using the Java programming language. To this end, we explore in depth object-oriented development, testing, and version control techniques. We pay special attention to writing precise requirements and creating user-centric interfaces. The four course projects incorporate relevant technologies for modern software design, including network programming, databases, and multithreading. In each assignment, we integrate multiple concepts in the context of developing realistic software applications.

At the end of the course, you will be expected to be able to: Instructor:
Dr. Gabriel Ferrer
M.C. Reynolds 312
http://ozark.hendrix.edu/~ferrer/

Office Hours:
By appointment. To make an appointment with me, visit http://drferrer.youcanbook.me. From there, you can see my availability and select an appointment time.

Also, please feel free to stop by whenever my door is open.

Class Web Page: http://ozark.hendrix.edu/~ferrer/courses/250/

Lecture Time: A4 (11:10-12:00 pm MWF)

Final Exam Period: Monday, May 8, 2017, 8:30-11:30 am

Required Textbooks:
Writing Effective Use Cases, Alastair Cockburn, Addision-Wesley, 2000.
Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin, Prentice-Hall, 2008.

Grading Criteria:
There are a total of 1,000 points available over the course of the semester. The thresholds for earning each letter grade are as follows:
Letter gradePoints to achieve
A900
B800
C700
D600

Here are the semester's assignments and the associated points for each:
AssignmentValue
Project 1200
Project 2200
Project 3200
Project 4200
Presentation 150
Presentation 250
Final Paper100

Projects (200 points each, 800 points total):
Programming Teams: The first project will be individual; after that, all programming projects will be completed in teams. Team size may vary per project. For each project, teams may vary slighly in size. Each team will be awarded a common grade for the project. Based on the code reviews, the instructor may adjust the grade awarded to individual team members at his discretion.

Each programming project has five deadlines:

  1. Intermediate Deadline: The source code, object code, and all auxiliary files necessary for execution should be uploaded via Moodle for evaluation. The program is expected to compile without errors and execute.
  2. Intermediate Code Review: A progress report, containing all of the elements mentioned above.
  3. Final Code Freeze: At the code freeze deadline, coding must stop. No further modifications are to be made. The source code, object code, and all auxiliary files necessary for execution should be uploaded via Moodle for evaluation. The program is expected to compile without errors and execute.
  4. Final Code Review: The final code review, as described above.
  5. Code Revision: Once the code and code review have been submitted for the final deadline, students are welcome to revise their programs. Although a grade might not necessarily have been received, students should be able to determine the key flaws in need of revision; if there is any doubt, a consultation with the instructor would be appropriate. Revisions are limited to the requirements that were seriously attempted prior to the code-freeze deadline. The code review must also be revised. The revised code and review will have a simultaneous deadline, which will typically be before the start of the next project.

After the revision is submitted, the instructor will re-grade the project. The grade for the revision will replace the grade for the original submission. It follows from this that submitting a revision is optional.

Presentations (50 points each, 100 points total): Throughout the semester, students will be assigned to present code samples to the class. These presentations will begin during the sixth week of classes. A schedule of presentations will be posted on the course web page. Each student will do two presentations over the course of the semester. The goal of each presentation is to have an open discusion to analyze the quality of the design. For each presentation:

Final Paper (100 points): Each student will write a final paper. It will be due on Wednesday, May 10, at 5 pm. Each paper will analyze the design decisions made in your programming projects.

Late Policy: No late work will be accepted. If a program is not complete, submit whatever is done by the code-freeze deadline in order to receive credit.

Computer Lab Facility: You will receive an account that enables you to use the Linux machines in MCReynolds 316. Be sure to review the lab policy page: http://ozark.hendrix.edu/linux/policies.html

Accommodations: It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Any student who needs accommodation in relation to a recognized disability should inform the instructor at the beginning of the course. In order to receive accommodations, students with disabilities are directed to contact Julie Brown in Academic Support Services at 501-505-2954.

Schedule: The anticipated schedule for the semester is below. The instructor reserves the right to alter the schedule as necessary during the semester.

DateDayTopic/ActivityReadingAssignment Due
1/18WednesdayUse CasesNoneNone
1/20FridayUse CasesUse Cases, Chap. 1-2Project 1: Concept outline
1/23MondayPeer review of use cases
JavaFX
Use Cases, Chap. 3-4Project 1: Use Cases, draft 1
1/25WednesdayPeer review of use cases
More JavaFX
Use Cases, Chap. 6-7Project 1: Use Cases, draft 2
1/27FridayPeer review of use cases
Project selection
Using GitHub
Use Cases, Chap. 8, 10 Project 1: Use Cases, final draft
1/30MondayUser Interface DemonstrationUser Interface Design for ProgrammersProject 1: GUI
2/1WednesdayClean Code
Naming
Unit Testing
Clean Code, Chap. 1, 2, 9None
2/3FridayProject 1, first demoNoneProject 1: Intermediate Deadline
Code Review due 2/4, 5 pm
2/6MondayWriting Functions
Commenting
Clean Code, Chap. 3, 4None
2/8WednesdayException handling
equals()
toString()
hashCode()
Clean Code, Chap. 7None
2/10FridayProject 1, final demoNoneProject 1: Final Deadline
Code Review due 2/11, 5 pm
2/13MondaySockets
Concurrency
Clean Code, Chap. 13None
2/15WednesdayPeer review of use casesNoneProject 2: Use cases, draft 1
2/17FridayPeer review of use cases
Project selection
NoneProject 2: Use cases, final draft
2/20MondayMidwinter break
No class
NoneNone
2/22WednesdayUser Interface demonstrationNoneProject 2: GUI
2/24FridayObjects and ClassesClean Code, Chap. 6, 10None
2/27MondayDelegation
Polymorphism
Inheritance
NoneNone
3/1WednesdayProject 2, first demoNoneProject 2: Intermediate Deadline
Code Review due 3/2, 5 pm
3/3FridayStudent presentations of codeNoneNone
3/6MondayStudent presentations of codeNoneNone
3/8WednesdayProject 2, final demoNoneProject 2: Final Deadline
Code Review due 3/9, 5 pm
3/10FridayRelational DatabasesNoneNone
3/13MondayPeer review of use casesNoneProject 3: Use Cases, draft 1
3/15WednesdayPeer review of use cases
Project selection
NoneProject 3: Use Cases, final draft
3/17Friday User Interface demonstrationNoneProject 3: GUI
3/20MondaySpring Break
No class
NoneNone
3/22WednesdaySpring Break
No class
NoneNone
3/24FridaySpring Break
No class
NoneNone
3/27MondayMutable vs. Immutable Data StructuresNoneNone
3/29WednesdayStudent presentations of codeNoneNone
3/31FridayProject 3, first demoNoneProject 3: Intermediate Deadline
Code Review due 4/1, 5 pm
4/3MondayStudent presentations of codeNoneNone
4/5WednesdayStudent presentations of codeNoneNone
4/7FridayProject 3, final demoNoneProject 3, Final Deadline
Code Review due 4/8, 5 pm
4/10MondayRetrospective: First 3 ProjectsNoneNone
4/12WednesdayPeer review of use cases
Project selection
NoneProject 4: Use Cases
4/14FridayCreate Project 4 GUINoneNone
4/17MondayStudent presentations of codeNoneNone
4/19WednesdayStudent presentations of codeNoneNone
4/21FridayProject 4, first demoNoneProject 4: Intermediate Deadline
Code Review due 4/22, 5 pm
4/24MondayDiscussion of project issuesNoneNone
4/26WednesdayStudent presentations of codeNoneNone
4/28FridayStudent presentations of codeNoneNone
5/1MondayProject 4, final demo
Course Evaluations
NoneProject 4: Final Deadline
Code Review due 5/2, 5 pm
5/8MondayFinal Exam Period
Attendance optional
Demos of revised projects
NoneNone
5/10WednesdayLast day of finalsNoneFinal paper