CSCI 250 - Scalable Software Design and Development

Spring 2012

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: MRF: 1:30-4:00 pm

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

Lecture Time: A2 (9:10-10:00 am MWF)

Final Exam Period: Tuesday, May 8, 2012, 8:30-11:30 am

Required Textbooks:
Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin, Prentice-Hall, 2008.
Effective Java (2nd Edition), Joshua Bloch, Prentice-Hall, 2008.

Grading Criteria:
Programming projects: 55%
Code reviews: 20%
Presentations: 20%
Class participation: 5%

Each programming project will be graded as follows: Each assignment will be assigned two letter grades: one for correctness, and one for design and readability. 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 +5, and a "-" is worth -4. A grade of "A+" 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 Projects: Most programming projects will be completed in teams. Team size may vary per assignment. For each assignment, teams may vary slighly in size. At the end of each assignment, team members will have the opportunity to evaluate their own performance and that of their peers. Each team will be awarded a common grade for the project. Based on the peer evaluations, the instructor may adjust the grade awarded to individual team members at his discretion.

Each programming project has three deadlines:

  1. Code Freeze: At the code freeze deadline, coding must stop. No further modifications are to be made to the code. The source code (i.e. *.java files) will be uploaded for evaluation.
  2. Code Review: The code review deadline will be from 24-72 hours after the code freeze deadline. The code review is a written assessment of your submitted program that includes a discussion of the design and the current state of completion. It must be printed out and submitted at the start of class.
  3. Code Revision: Once the code and code review have been graded and returned, students are welcome to revise their programs. 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.

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, readings will be assigned from the textbooks. For many of these assignments, a student will be assigned to present the material from the reading to the class. In each presentation, the student will be expected to:

Other students in the class will be expected to ask questions and participate in a discussion of the reading and the presenter's interpretation of the reading.

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