CSCI 250 - Scalable Software Design and Development

Spring 2014

Course Overview:
This course introduces the skills needed for writing large programs (on the order of 1000+ lines) using the Java programming language. Topics will include human-computer interaction, multithreading, network programming, parsing, grammars, testing, object-oriented design, and an introduction to databases and software engineering. There will be several large programming projects that emphasize integrating these concepts into realistic applications software.

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:
MTWRF: 1:30-2:30 pm
Feel free to stop by whenever my door is open.

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

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

Lecture Time: A3 (10:10-11:00 am MWF)

Final Exam Period: Friday, May 9, 2014, 8:30-11:30 am

Required Textbook:
Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin, Prentice-Hall, 2008.

Grading Criteria:
Program correctness: 20%
User interface design: 10%
Automated testing: 10%
Program design and readability: 10%
Code reviews: 10%
Intermediate deadlines: 10%
Presentations: 10%
In-class exercises: 10%
Final paper: 10%

Each programming project will have an intermediate deadline and a final deadline. At the intermediate deadline, two grades will be assigned: an intermediate deadline grade, and a code review grade. At the final deadline, five grades will be assigned: a correctness grade, a user interface grade, a testing grade, a design grade, and a code review grade. Each assignment will be assigned a letter grade for each of these four categories. Each letter grade has associated with it a percentage grade as follows:
Letter gradePercentage
A95
B85
C75
D65
F50

Missing grades will be scored zero. Any grade can have a "+" or "-" attached to it. A "+" is worth +4, and a "-" is worth -4. A grade of "A+" (100) will only be assigned to work that in some way goes above and beyond the requirements for the assignment.

For each category above, the total points earned will be divided by the total points possible to yield a percentage. These percentages will be weighted as given above. A final average of at least 90 earns an A; 80 earns a B; 70 earns a C; 60 earns a D; below 60 is failing.

Programming Teams: The first two projects 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 welcome. Revisions are limited to the parts of the assignment 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: 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:

At the start of each team assignment, teams will present their concept for the project to the class. Each presentation should be a properly developed PowerPoint-style presentation using the overhead.

In-Class Exercises: On four class days this semester, short exercises will be assigned that are to be completed during class time and submitted at the end of the class period.

Final Paper: The final paper will be due on Wednesday, May 14, at 5 pm. The paper will be an analytical retrospective of your work over the course of the semester. Details of the assignment will be given on Monday, May 5, the last day of classes.

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.