Course:CS 245 - Advanced Programming and Data Structures
Spring 2014
Description and objectives: In this course we will investigate ways of producing quality software that scales with the size of data.

Upon successfully completing this course, you will be able to:

  • Reuse code by taking advantage of inheritance, polymorphism, and generic types.
  • Support user interaction through graphical user interfaces.
  • Solve self-similar computational problems with recursion.
  • Apply multiple processors to a task using multiple threads of execution.
  • Employ canonical abstract data types like lists, stacks, queues, and trees.
  • Strengthen code reliability through unit testing.
Instructor:Chris Johnson (johnch@uwec.edu)
Office hours:Monday/Wednesday 2-3 PM, Tuesday/Thursday 11 AM-12 PM in Phillips 134
Webpage:http://www.cs.uwec.edu/~johnch
Class repository:https://bitbucket.org/twodee/cs245_homework_2014a
Discussion board:http://piazza.com/uwec/spring2014/cs245
Teaching assistants:Natalie Wolf
Tuesday 2-3 PM, Wednesday 12-1 PM in Phillips 111
Daniel Klingensmith
Tuesday 1-2 PM, Thursday 2-3 PM in Phillips 111
Lecture:TTh 9:30-10:45 AM
Phillips 276
Labs:Section 311
M 8:00-9:50 AM
Phillips 115
Section 312
M 10:00-11:50 AM
Phillips 115
Exams:Midterm - March 11
Final - Friday, May 16, 3-4:50 PM
Textbooks:Data Structures: Abstraction and Design Using Java (2nd edition)
by Elliot Koffman and Paul Wolfgang
ISBN: 978-0470128701
Core Java, Volume 1 (8th edition)
by Cay Horstmann and Gary Cornell
ISBN: 978-0132354769
Grading: Your instructor employs a grading system that is somewhat nontraditional. It places more emphasis on self-improvement and mastery of the course material than meeting deadlines, though effective use of one's time is still a necessary ingredient for your learning.

Grades are assigned based on how many Blugolds you earn. You, the student, pick the grade you want and complete the necessary tasks to achieve Blugolds. The grading matrix follows:

Blugolds earnedGrade
0-4F
5D
6C-
7-8C
9C+
10B-
11-12B
13B+
14A-
15-16A

Tasks include:

  • Preassignments (3, each worth 1 Blugold)
  • Regular assignments (4, each worth 2 Blugolds)
  • Midterm (worth 2 Blugolds)
  • Final (worth 2 Blugolds)
  • Participation (1 Blugold for >= 85% of 1/4-sheets turned it at the beginning of lecture)
  • Labs (1 Blugold for over 50% of checkpoints completed, 2 for 90% or better)

Assignments are also graded a bit differently from the norm:

  1. Partial credit is not awarded. Each assignment is graded pass/fail. To receive Blugolds for an assignment, you must complete all requirements listed in its specification.
  2. Submissions that fail to meet all requirements may be resubmitted if enough of the assignment is completed by the deadline to qualify for later-week submission. In general, one qualifies for later-week submission by having all required classes and methods with correct signatures. The code must compile. The SpecChecker will inform you when your submission qualifies.
  3. Only one assignment (new or resubmitted) may be turned in per week. The submission week starts on Sunday and ends on Saturday.
  4. All submissions must be turned in by the end of the last Thursday before finals week.

Lab checkpoints must be submitted for review during the lab they were assigned or in the first 15 minutes of the succeeding lab.

Communication: Your instructor is finite and values focus. Please keep these points in mind when needing to communicate with him:
  • Honor your instructor's closed door. Please visit only during posted office hours. Do not drop by at other times without having scheduled a time via email at least one day before the meeting.
  • Your instructor values his time with family. He does not respond to email after 5 PM or on weekends. Plan accordingly.
Good studentship: Follow these principles to maximize your learning and grade:
  • A good education requires both good teaching and good learning. It takes hard work from both instructor and student.
  • Early is better than on time.
  • Plan for homework to take longer than you think.
  • Do your own coding. Discussion of problems is allowed, but using another's code, sharing your code with others, or soliciting solutions from others will earn you a report of academic misconduct and lower your grade. You don't want to live in a world serviced by people who did such things to squeak by, so don't do them yourself.
  • Grades are calculated according to your achievement, not your circumstances.
Accommodations: Any student who has a disability and is in need of classroom accommodations, please contact the instructor and the Services for Students with Disabilities Office in Old Library 2136 at the beginning of the semester.
Easter egg: Students who includes the sentence "I read the syllabus!" on their first 1/4-sheet, which is turned in on January 23, get 1 free participation point.