ICS 211: Introduction to Computer Science II - Spring 2013
MW - 1030-1145a - MSB 114
Instructor: Zach Tomaszewski, PhD
Course Site: <http://www2.hawaii.edu/~ztomasze/teaching/ics211/2013sp/>
Assignments, lecture notes, and other resources will be available at the course site given above. The site also includes links to the lab pages and to Laulima. We will use Laulima for quizzes, occasional discussion, and recording exam grades.
Course description (from UH catalog):
(3 credits). Algorithms and their complexity, introduction to software engineering, data structures, searching and sorting algorithms, numerical errors. Pre: grade of "B" or higher in 111 or consent.
All students wishing to enroll in ICS courses above 211 except ICS 241 must meet the prerequisite grade requirement of B or higher in ICS 111 and 211 prior to registering for the course.
Upon successfully completing this course, students will be:
45% - Exams (3 midterms and 1 final, each worth 15%, dropping the lowest score)
5% - Online quizzes and discussion
50% - Assignments
Letter grades will be assigned using the following scale:
101%+ = A+
100 - 93 = A
92 - 90 = A-
89 - 87 = B+
86 - 83 = B
82 - 80 = B-
79 - 77 = C+
76 - 73 = C
72 - 70 = C-
69 - 67 = D+
66 - 63 = D
62 - 60 = D-
59- = F
A student must have an average exam score of 70% or higher to receive a grade of B or higher for the course.
I reserve the right to lower these grade thresholds, but I will not raise them. There will be no grading curve, so it is possible for all students to receive As (or Fs).
Assignments will be submitted through Tamarin (as explained in more detail in lab). Unless stated otherwise, assignments are due by 8am on the day after the given due date.
Late assignments are -20% of the total possible score for up to 48 hours late and -40% for 48 to 96 hours late. (For example, suppose you turned in a 50-point assignment three days late and scored 40 points. Your late penalty would be -40% * 50 = -20, and so your final score would be 20 points.) Assignments more than 4 days late will not be accepted.
Note that this is actually a very harsh late policy. This is to discourage you from falling behind, since most students that do so never catch up again. If you regularly turn in work only 2 days late, your assignment average will be 80%, which is less than the B required to move on past 211. If you regularly submit 3 or 4 days late, your resulting 60% assignment average puts you very near the F borderline. This policy exists simply to give you flexibility for occasional minor emergencies that may arise during the semester. You can easily offset occasional use of this policy with extra credit, explained below.
There is no late period for quizzes or discussions. There will be no makeup exams, so a missed exam is given a score of 0. (But remember that the lowest exam grade will be dropped.)
There will be various opportunities to earn extra credit during the semester. Extra credit is applied only to the Assignments portion of your grade. However, regardless of how much extra credit you earn, your Assignments grade cannot exceed 55% of your total grade. The primary value of extra credit is to offset any unexpected late penalties on assignments.
Exams will be closed book and closed notes. Unless explicitly told otherwise for a particular assignment or activity, students are not to collaborate on any code submitted for a grade. That is, you must work individually and do your own work. Students that collaborate on code submitted for an assignment will be warned and asked to split the grade for that assignment. Plagiarism or a second collaboration offense will result in an F for the course and disciplinary action. (See Examples of Cheating for more.)
The labs will be handled by the TAs, Anthony Christe (email@example.com) and William Wright (firstname.lastname@example.org). Lab attendance is expected. Labs will cover some material not covered in lecture, and there may be occasional activities in lab (such as code review studios) that will form part of your Assignment grade. Labs are also another source of extra credit points. You must submit your assignments to the TA/Tamarin of the lab section for which you are officially registered:
Section 001 - WF - 1200-0115p - POST 319 - William Wright
Section 002 - WF - 1200-0115p - POST 318A - Anthony Christe
Section 003 - WF - 0300-0415p - POST 319 - Anthony Christe
We have three lab assistants this semester that will help out in some of the labs. They will also be available to help you during open lab hours in POST 318A. You can see any of the LAs for help. Their open lab hours are:
Mondays: 3 to 6pm (William Gaul), 6 to 9pm (Duane Leong)
Wednesdays: 6 to 9pm (Robert Shelton)
On other evenings in POST318A, there will be ICS111 LAs on hand. These LAs have all completed ICS211 and so should be able to provide you some help too, but they will likely not be as familiar with the specific details of the current 211 assignments:
Tuesdays: 6 to 9pm (Kevin Paek)
Thursdays: 6 to 9pm (Diliaur Tellei)
Fridays: 6 to 9pm (Chih Chang)
Koffman & Wolfgang's Data Structures: Abstraction and Design Using Java. 2nd Edition. John Wiley & Sons, 2010.
Meeting with me:
I am nearly always free after class. I will also have open office hours on Mondays, 12:30pm to 1:45pm, in my office, POST314D. You can also email me to set up an appointment at some other time; Mon, Wed, and Thu afternoons work best for me.
Special needs and other issues:
If you have any disabilities or problems that are interfering with your learning experience in this course, please let me know so we can do something about it. This includes any major emergencies or serious issues that may arise in your life during the semester. The sooner you let either me or your TA know, the more likely it will be that we can do something to accommodate you.
If you are not comfortable talking to either me or your TA, you can contact the ICS student advisor, Gerald Lau (email@example.com, POST 303A).
Tentative Schedule (may change):
In particular, exam dates may shift one class meeting earlier or later. I will try to avoid this whenever possible, though.
Java: Conditionals, etc.
Java Tutorial: Getting Started (skim) & Language Basics|
Textbook: Appendix A.1-A.4
Java: Loops, etc.
Java Tutorial: Language Basics & Exceptions|
Textbook: Appendix A.10-A.11
Software Development Process|
Java Tutorial: Methods: defining, parameters, returning (from Classes and Object)
Textbook: Appendix A.4
Java: Arrays, cmd line args, File I/O.
Java Tutorial: Language Basics (arrays)|
Textbook: 2.4; Appendix A.8
|21Jan||M||--||[Holiday: MLK Jr. Day]|
Java: JVM (stack and heap)
|28Jan||M||04A||Algorithms: Recursion and Backtracking|
Java: Odds and Ends
|Textbook: (optional: 5.5), 5.6|
Java: Odds and Ends, Objects, Enums
Java Tutorial: OOP Concepts, Classes and Objects (first half, through More on Classes), Enum Types|
Textbook: 2.1-2.2 (ArrayList), 2.11 (testing); Appendix A.6, A.7, (A.12), [Appendix A]
|04Feb||M||EXAM||[Procedural java, algorithms, software development, big-O, recursion]|
ADT: Intro, Stack (array-based)
Java Tutorial: Exceptions|
Textbook: 1.1-1.3, [Ch. 1]; 3.1
|11Feb||M||06A||ADT: Stack (node-based)|
Textbook: 2.5 (first part, through Connecting Nodes), 3.3, [Ch. 3]|
|13Feb||W||06B||Java: Interfaces and Inheritance||Java Tutorial: Interfaces and Inheritance|
|18Feb||M||--||[Holiday: President's Day]|
|20Feb||W||07B||ADT: Queue||Textbook: 4.1, 4.3, [Ch. 4]|
|25Feb||M||08A||ADT: List||Textbook: 2.1, 2.3, 2.5|
|27Feb||W||08B||ADT: List variants|
|04Mar||M||09A||ADT: Java Collections API||
Java Tutorial: Collections (skim to see what's there);
Textbook: 2.9, [Ch. 2]
|06Mar||W||09B||Java: GUIs||Java Tutorial: Creating a GUI with Swing|
|11Mar||M||EXAM||[OOP, ADTs, Stack, Queue, List]|
Searching: linear, binary
Sorting: Insertion, Selection
Java Tutorial: Applets|
Textbook: 8.2, 8.4.
|18Mar||M||11A||Sorting: Bubble, Merge, Quick; etc.||Textbook: 8.3, 8.7, 8.8, 8.9|
Merge and Quick sort slides
|20Mar||W||11B||ADT: Trees, traversals||Textbook: 6.1, 6.2, 6.3|
|--||--||--||[Holiday: Spring Break]|
|01Apr||M||12A||ADT: Binary Search Tree||Textbook: 6.4|
|03Apr||W||12B||Using trees: Iterating, Searching|
|08Apr||M||13A||ADT: Heaps, priority queues, (heap sort)||Textbook: 6.5, 8.8|
|10Apr||W||13B||Huffman Trees (and other variants)||Textbook: 6.6, [Ch. 6]|
|15Apr||M||EXAM||[Searching, sorting, BSTs, trees]|
|17Apr||W||14B||Hashing||Textbook: 7.3, 7.4|
Optional: Hash functions, Hash tables
|22Apr||M||15A||ADT: Sets and Maps; Comparator||Textbook: 7.1, 7.2, 7.7|
|24Apr||W||15B||Equality: equals and hashCode||Textbook: 7.5, [Ch. 7]|
How to Write an Equality Method in Java
|29Apr||M||16A||Immutability; Graphs, other ADTs||Textbook: [Ch 10]|
For your reference, a PDF snapshot of the original version of this syllabus is available in Laulima under Resources.