CSC 102: Fundamentals of Computer Science II

CSC 102: Fundamentals of Computer Science II



Instructor

Gene Fisher (gfisher@calpoly.edu)
Office: 14-210
Office Hours: MWF 2-3PM, Tu 9-11AM, other times by appointment,
any time by email, approximately daily on Piazza

Course Objectives


Prerequisites


Text and Other Class Materials

The textbook is "Big Java" by Cay Horstmann, 4th edition. In the opinion of your instructor, it's quite a good book. There's a website for the book at http://www.horstmann.com/bigjava4.html which includes some useful information, including source code for all of the examples used in the book.

Other editions of Big Java will work OK, but you'll need to convert between the book sections and page numbers that appear in 102 the notes. There's help with this online, for example a feature mapping between Big Java versions 3 and 4 at http://spreadsheets.google.com/ccc?key=tj0a1XuzAWk16KM7vIS8YGQ&hl=en (which is linked to from book's website).

The 102 course website is http://www.csc.calpoly.edu/~gfisher/classes/102

There is a variety of material on the site, organized into the following directories:


Graded Work

The graded work for the class is subdivided into the following categories, with the value of each category shown as a percentage of the overall class grade:

There are also 15 labs that you will submit, for which there is no specific grading percentage. Your scores on the labs will be used in assigning final course grades for border-line cases. For example, if you're on the high end of the 'B' grade range and have done well on all the labs, then you'll be eligible to move into the 'A' grade range.

Your submitted programs must compile and pass all test cases to receive credit. For each program you will be given a set of tests that your program must pass. If your program passes all of the tests on or before the first due date, you will receive 100%. If your program does not pass initially, you will then have the opportunity to submit your program for reduced amounts of credit for up to five additional days. After the last submission date, you cannot submit the program for credit. Complete details of the due date and credit values will be provided in the writeup for each program. See for example the scoring details for programming assignment 1.

Programs must be fully documented in order to receive full credit. In particular, an entirely undocumented program will receive as little as 70% credit. Per the grading scale given below, that's a "C" grade. Detailed conventions for documentation and coding standards are online in the class info directory. Additional specific scoring details will be provided for each assignment.

In general, the work in the labs will involve reasonably small programs, and answers to analytic questions. Work on the programming assignments will involve programs of significant size, measured in hundreds of lines of code.

As noted above, labs are not counted as an explicitly graded component of the course. However, it is highly recommended that do the labs. They will cover material that is directly relevant to the programming assignments and lab quizzes.

The course grading scale is based on absolute percentages of points received. 90% or above is guaranteed an A (or A-) in the class; 80% a B, 70% a C, and 60% a D. Depending on overall class performance, the scale may be lowered, but it will never be raised.

If you find a problem with the grading on an assignment, you must submit it for re-grading within ten days of when it was handed back. Grades will be posted on the class website, under individually password protected pages for each student in the class. Be sure to check what is posted regularly, to ensure that it agrees with your records.

Where and When to Turn in Assignments

All of the programs, labs, and labs quizzes will be submitted electronically. To submit, you will use the handin program on the central UNIX machines in the Computer Science Department Labs (CSL). The specific machines you must use for handin are named unix1, unix2, unix3, and unix4. These machines are henceforth referred to as "the CSL unix machines". All four of the CSL machines share the same file space, so you may submit from any of one of them. In the first lab, we'll cover how to use the handin program.

Late Policy

As outlined above, programs can be turned in after the first due date. There will be a point deduction on successive late days, and a final date after which you cannot submit your program for credit. Specific dates will be given in the writeup for each program and lab.

Collaboration and Cheating

Except for the quizzes, your lab work may be done with a partner. You are in fact strongly encouraged to work with a lab partner, but not required to do so.

All programs must be done individually. It is OK to discuss general principles and ideas with colleagues, but the programming assignments are not to be done in groups, or with your lab partner.

Use of anyone's solutions other than your own is considered cheating. This includes solutions from previous offerings of this or any other course, solutions you may find online, or solutions you get from any source other than your own brain.

Any instance of cheating or plagiarism will be referred to the campus office of student rights and responsibilities. Campus cheating policies are defined online at


http://www.osrr.calpoly.edu

Any documentable instance of cheating will result in failure of the course.

Computer Accounts

Most, if not all, members of the class will already have accounts on the CSC department machines. The Java compiler and other tools used in 102 all run on these machines. If you do not have an account, please let me know on the first day of class so you can be assigned one.

Note Well: If you use a home compiler to develop your programs, you must verify that the program compiles and runs one of the CSL unix machines before you hand it in. When you submit programs, they will be compiled and executed by a script that runs on the CSL machines. You are responsible to ensure that your programs run the same on the CSL machines as they do on any other computers you may use to develop the programs.

Also note that the CSL UNIX machines run Java Version 6. This means that you cannot use Java features that are specific to Java Version 7 alone. It is unlikely that this will ever be an issue in 102, but you should be aware of it.

Choosing a Java Development Environment

You are not required to use any specific Java IDE (interactive development environment). The first lab provides an introduction to jGrasp, which should suit your 102 needs quite well. There are many other Java development environments from which to choose. A few of them are listed in the 102 info directory

Course Topic, Reading, and Due-Date Summary

Week Topics Reading Labs Programs Exams
1
  • Monday holiday (Chavez Day)
  • introduction to the course
  • recap of core topics from 101
  • introduction to Java classes
  • basic concepts of OOP, including vocabulary
Chs 1-5 Labs 1,2  
2
  • classes Object and String
  • how data are stored in Java
  • introduction to Java equality
  • introduction to Java arrays
  • introduction to systematic testing
Ch 6
Sec 7.3
Labs 3,4 Prog 1
assigned, Mon
 
3
  • more on Java equality and overriding equals
  • introduction to ArrayLists
  • introduction to Java generics
  • introduction to interfaces and polymorphism
  • class details -- wrappers, boxing, instanceof
Chs 7,9 Labs 5,6 Prog 1
due, Wed

Prog 2
assigned, Wed
 
4
  • shallow versus deep equality and copying
  • the Comparable interface
  • more on Java arrays and ArrayLists
  • inheritance and abstract classes
Ch 10
Sec 12.3
Lab 7 Prog 2
due, Wed

Prog 3
assigned, Wed
Lab Quiz 1,
Wed
5
  • exceptions, the Exception class, try/catch
  • introduction to GUIs with the Processing library
  • introduction to text file I/O
Ch 11
GUI lib
Lab 8 Prog 3
due, Fri

Prog 4
assigned, Fri
 
6
  • searching and sorting
  • iterators and related topics
  • abstract data types (lists, stacks, queues)
  • introduction to big-oh notation
Ch 19 Labs 9,10    
7
  • implementing linked lists
  • big-oh comparison of array and
    linked list implementations
  • more on the Processing graphics library
Ch 15 Lab 11 Prog 4
due, Wed

Prog 5
assigned, Wed
Midterm +
Lab Quiz 2,
Wed
8
  • more on linked lists, including iterators
  • introduction to design patterns
Ch 18 Lab 12 Prog 5
due, Fri Prog 6
assigned,
Fri
 
9
  • Mon Holiday (memorial day),
    Tu follows Mon schedule
  • recursion
  • more on input/output (non-text, non-file)
  Labs 13,14    
10
  • more on recursion
  • course review
  Lab 15 Prog 6
due, thu
Lab Quiz 3,
Wed
finals
  • common final exam
  • day TBD, Mon most likely
  • times 4-7PM or 7-10PM
  • rooms 14-256, 257, 301, 302, 303;
    14-235 also used for 7-10PM time slot




index | info | lectures | labs | programs | solutions | examples