University of Minnesota
Structure of Computer Programming II
index.php

CSci 1902, Structure of Computer Programming II, Spring 2012

Lecture: MW 4-5:15pm in Keller Hall (KH) 3-210
Laboratories: Sections 2, 3, 4, 5 and 6 meet Tuesday (125pm, 230pm, 335pm, 440pm, 545pm) in KH 1-260.
Role Name Office Office Hours Lab section
Professor Shashi Shekhar KH 5-203 M 3:00-4:00pm, W 5:15-6:15pm
TA Dominique LaSalle KH 4-240 M 10:00-11:00am 5, 6
TA Jacob Thebault-Spieker KH 4-240 W 9:00-10:00am, F 2:00-3:00pm 2, 3, 4
TA Elliot Branson KH 4-240 M: 11:00am-12:00noon 3, 4
TA Erik Mainz KH 4-240 Th 1:15-2:15pm 5, 6
TA Lars Anderson KH 4-240 F 1:00-2:00pm 2, 6
TA Eitan Rogin KH 4-240 W 6:30-8:30pm 2, 5
TA Iustin Cornea KH 4-240 Th 4:30-5:30pm 3, 4

Email: Please send all email to cs1902@cs.umn.edu. Use 'Reply All' in replying to a response from cs1902@cs. It will help ensure timely response from the most relevant person.
Web Pages: Schedule&Homework, Class Notes, Instructor Announcements, TA Announcements, Teams, News, GRIT
Course Home Page: http://www.spatial.cs.umn.edu/Courses/Spring12/1902/

Text Book: Carrano, Frank, Data Structures and Abstractions with Java, 3rd Edition, Prentice Hall, ISBN-10: 0136100910.
Recommended (for labs):
On-line Java Tutorial (e.g., section on Learning the Java Language ) from oracle.com, or
Joel Murach, Java Programming, Murach and Associates, 2011, ISBN 978-1-890774-65-3; or
Java in 24 Hours (with Java 7 and Android), R. Cadenhead, 6th Ed., Sams Publishing, 2012, ISBN 0672335751. or
John R. Hubbard, Programming with Java (Schaum's Outlines), McGraw-Hill, 2004, ISBN 978-0071420402 or
Bruce Eckel, Free Electronic Book: Thinking in Java, 3rd Edition, Prentice Hall, 2002.
Eclipse, Steve Holzner, 1st Edition, O'Reilly Media, 2004, ISBN 0596006411.
On-line Eclipse tutorials, e.g., 1 and 2 .

Topics: Java Fundamentals: object-oriented/imperative programming, the Eclipse environment, variables, assignment, conditionals, loops, arrays, strings, test-driven development, I/O, Exception handling, classes, inheritance, generics, interfaces.
Algorithms: Algorithmic Efficiency, Big-O Notation, sorting, searching.

Data-Structures (specified as Abstract Data Types) :Lists, array implementations of lists, iterators, dictionaries stacks, queues, hash tables, trees, tree algorithms, priority queues.

Examinations and Assignments: The weighting scheme used for grading is: Labs - 10%, Quizzes (four total, one lowest score will be dropped) - 30% overall, Final exam - 30%, Homeworks (five total) - 20%, Class Participation - 10%. There are three necessary conditions for passing this class: (1)Submission of all homeworks;(2)Scoring at least 50% on the final examination;(3) Completion of at least 10 of the 14 labs. There are 5 homeworks, all of which will require programming. Homework should be submitted electronically via the Online Submission Utility located at https://wwws.cs.umn.edu/submit/. Form groups of two to submit homeworks. All homeworks must have your team number, names, student IDs, and course name/number. Each team should only submit one copy of the homework. Students MUST ensure that this information is provided, or homeworks may not receive a grade in a timely manner (or at all). Class participation includes in-class discussions, active learning and citizenship to enhance the learning environment.

Every student will have the opportunity to achieve an A in the course, and the grading will not be based on a normal distribution, but instead on an absolute scale. It will be difficult to achieve an A if a student does not attend class, does not complete all of the homework, or does not do very well on the quizzes or final.

Late Submission Policy: Teams will be given one grace day, which will allow a single homework to be submitted 24 hours past the deadline. The grace day does not apply to labs, nor to quizzes or the final. Otherwise, late submissions will not be accepted for credit. The following is, roughly, the weight distribution for homework problems: Correctness - 80%, General completeness and code readability including comments - 20%

Cheating/Collaboration: Getting help from services like general debugging service (GDS), web-sites (e.g. cheaters.com), copying someone else's homework, or the common solution of written or programming homeworks will be considered cheating. Interaction for the purpose of understanding a problem is not considered cheating and will be encouraged. However, the actual solution to problems must be one's own.

Other Comments: This class is very interesting and useful, since program = data-structures + algorithms + software architecture. We will explore fundamental data-structures (e.g. queues, stack, maps, hash, dictionary) and algorithms (e.g., sorting, searching) using software architecture of abstract data types and Java programming language. These ideas underly not only classical software systems (e.g., databases) but also modern systems. For example, map (a.k.a dictionary) underlies the Big-table data-structure powering Google search engine. To get full benefit out of the class you have to work regularly. Attend all classes, participate in class discussions, read the textbook regularly and start on the homeworks soon after they are handed out. Plan to spend at least 10 hours a week on this class doing homeworks or reading. Welcome to CSci 1902!