# Syllabus

ICS 211: Introduction to Computer Science II - Spring 2013
MW - 1030-1145a - MSB 114

Instructor: Zach Tomaszewski, PhD
Email: ztomasze@hawaii.edu
Course Site: <http://www2.hawaii.edu/~ztomasze/teaching/ics211/2013sp/>

Course content:
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.

Course objectives:
Upon successfully completing this course, students will be:

• competent Java programmers
• proficient with common best practices in object-oriented programming, software design, and implementation
• familiar with common abstract data types (such as stacks, queues, lists, and trees)
• familiar with common searching and sorting algorithms
• able to evaluate, choose, customize, and implement the most appropriate algorithm or data structure for a given problem

Grading:
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).

Late policy:
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.)

Extra credit:
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.

Cheating:
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.)

Labs:
The labs will be handled by the TAs, Anthony Christe (achriste@hawaii.edu) and William Wright (wrightwr@hawaii.edu). 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

Lab Assistants:
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)

Textbook:
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 (glau@hawaii.edu, 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.

DateDayLectureTopicsReadings
07JanM01A Intro
Java: Conditionals, etc.
Java Tutorial: Getting Started (skim) & Language Basics
Textbook: Appendix A.1-A.4
09JanW01B Algorithms: Intro
Java: Loops, etc.
Java Tutorial: Language Basics & Exceptions
Textbook: Appendix A.10-A.11
14JanM02A SoftwareEng: Intro
Java: Methods
Software Development, Software Development Process
Java Tutorial: Methods: defining, parameters, returning (from Classes and Object)
Textbook: Appendix A.4
16JanW02B Algorithms: Big-O
Java: Arrays, cmd line args, File I/O.
Java Tutorial: Language Basics (arrays)
Textbook: 2.4; Appendix A.8
21JanM-- [Holiday: MLK Jr. Day]
23JanW03B Algorithms: Recursion
Java: JVM (stack and heap)
Textbook: 5.1-5.2
28JanM04A Algorithms: Recursion and Backtracking
Java: Odds and Ends
Textbook: (optional: 5.5), 5.6
30JanW04B Review
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]
04FebMEXAM[Procedural java, algorithms, software development, big-O, recursion]
06FebW05B SoftwareEng: OOP
ADT: Intro, Stack (array-based)
Java Tutorial: Exceptions
Textbook: 1.1-1.3, [Ch. 1]; 3.1
11FebM06A ADT: Stack (node-based)
Java: Generics
Textbook: 2.5 (first part, through Connecting Nodes), 3.3, [Ch. 3]
13FebW06B Java: Interfaces and Inheritance Java Tutorial: Interfaces and Inheritance
18FebM-- [Holiday: President's Day]
20FebW07B ADT: Queue Textbook: 4.1, 4.3, [Ch. 4]
25FebM08A ADT: List Textbook: 2.1, 2.3, 2.5
27FebW08B ADT: List variants
Java: Iterators
Textbook: 2.6-2.7
04MarM09A ADT: Java Collections API Java Tutorial: Collections (skim to see what's there); List interface
Textbook: 2.9, [Ch. 2]
06MarW09B Java: GUIs
Java Tutorial: Creating a GUI with Swing
11MarMEXAM [OOP, ADTs, Stack, Queue, List]
13MarW10B Java: Applets
Searching: linear, binary
Sorting: Insertion, Selection
Java Tutorial: Applets
Textbook: 8.2, 8.4.
18MarM11A Sorting: Bubble, Merge, Quick; etc. Textbook: 8.3, 8.7, 8.8, 8.9
Merge and Quick sort slides
20MarW11B ADT: Trees, traversals Textbook: 6.1, 6.2, 6.3
------ [Holiday: Spring Break]
01AprM12A ADT: Binary Search Tree Textbook: 6.4
03AprW12B Using trees: Iterating, Searching
08AprM13A ADT: Heaps, priority queues, (heap sort) Textbook: 6.5, 8.8
10AprW13B Huffman Trees (and other variants) Textbook: 6.6, [Ch. 6]
15AprMEXAM[Searching, sorting, BSTs, trees]
17AprW14B Hashing Textbook: 7.3, 7.4
Optional: Hash functions, Hash tables
22AprM15A ADT: Sets and Maps; Comparator Textbook: 7.1, 7.2, 7.7
24AprW15B Equality: equals and hashCode Textbook: 7.5, [Ch. 7]
How to Write an Equality Method in Java
29AprM16A Immutability; Graphs, other ADTs Textbook: [Ch 10]
01MayW16B Recap/review
06MayMFINAL9:45-11:45a [Comprehensive]

For your reference, a PDF snapshot of the original version of this syllabus is available in Laulima under Resources.