Syllabus for CSC214
Introduction to Java Programming
4 Credit Hours (3/2 lecture/lab)
Open Entry (Self-Paced)
Spring 2019
Harper College

SECTION

Class will meet:

Section Time Days Room
Office hours and other courses' lab times. D253a or D258

from Jan 14th to May 17th.

FINAL TIME

Each student will take their exam at a time appropriate for them and myself.

We can discuss later in the semester what slot is best for each student.

PREREQUISITE

CSC 121 (introductory C++) with a grade of a C or better
[it is recommended that you had a B or better to actually do well in this class — as this class is more demanding/challenging in time and intellectual difficulty]

TEXT

Big Java Early Objects; Cay Horstmann; Wiley; 6th Edition

Note that there is a student companion page for the book at the publisher's web site. You can also find the errata page at the author's web site.

OTHER TEXTS
(you might find useful)

Data Structures and Problem Solving Using Java; Mark Alen Weiss; Addison Wesley
Big C++; Horstmann & Budd; John Wiley & Sons
Data Structures, Algorithms and Applications in Java; Sahni; Addison Wesley
Compared to What? An Introduction to the Analysis of Algorithms; Rawlins; Computer Science Press
SAMS Teach Yourself Data Structures and Algorithms in 24 Hours; Lafore; MacMillian
Why Flip a Coin? The Art and Science of Good Decisions; Lewis; Wiley
The Algorithm Design Manual; Skiena; Telos

COURSE DESCRIPTION

Introduces the Java language in a UNIX environment. Includes algorithms, problem formulation, structured programming, variables, data types, input/output repetition, selection, arrays, functions, classes/objects, and recursion. Applications emphasize math, science, engineering, and computer science. This course will build on topics covered in CSC 121 (only in a new language).

STUDENT OUTCOMES (The student should...)
  1. analyze problems and create algorithms for their solution.
  2. develop structured flowcharts or pseudocode to describe algorithms using a top down/modularized approach.
  3. code algorithms in Java.
  4. debug programs using basic debugging skills.
  5. test the correctness of algorithms by designing appropriate input data sets.
  6. know how to use the object-oriented features of a language to solve problems.
OBJECTIVE

To foster the student's deepening understanding of the programming process. We will continue to emphasize problem analysis and algorithm development while showing the importance of testing and documentation in generating well-crafted programs.

The Java programming language will be used.

EVALUATION
Activity Percent
Tests36 %
Projects24 %
Labs20 %
Question Sets10 %
In Class Activities 10 %
Total100 %
Grade Percentage
A 90-
B 80- 90
C 70- 80
D 60- 70
F 0- 60

Also note that you cannot earn a C in this course without having shown at least a 70% competency on each and every topic covered during the semester (not a 70% average over all topics, but 70% on each topic). (See main page for the course for a topic list.)

The question sets, labs, and projects portions of your grade will come from the three portfolios you will be handing in (see below). Tests will be done in lecture time — not take-home.

TESTING

Lecture tests consist (most often) of true/false, fill in the blank (no word list), short answer, and hand-execution of code. Lecture tests may also include hand-coding of small (5-15 line) segments of code. Multiple choice can also occur, but all correct answers must be chosen (i.e. it isn't multiple guess). Finally, matching is a rare occurrence. (The online question sets make a pretty good sample of questions and style.)

Make-up exams (with a reasonable excuse — see attendance), will be ALL essay and/or hand-coding/execution.

Also there will be five tests — plus the final — during the semester. This means that each will be worth 6% of your overall grade.

ASSIGNMENTS

When an assignment is given (i.e. placed on the web page), you can hand it in as soon as you are done for a review of its content. ('done' here means that you've made a reasonable attempt to start the program or answer the questions. You don't have to have it perfect before you hand it in. You can even hand in something you've merely outlined/flow-charted, if it is a complete enough outline.)

I will give the checked paper back to you ASAP so that you can make any needed corrections to it before using it in a portfolio (if you so choose). You can also hand papers in as many times as you like before the portfolio is due. (Remember that this corrections policy is good for ANY of the online assignments: the paper, projects, labs, and even homework.)

Finally, every assignment will also be rated (typically between 1 and 7) as to its difficulty (1 is quite easy, 7 is fairly challenging). These ratings will help you determine what (corrected) assignments you'd like to hand in for your portfolios. Also, labs and projects often have options which can be done that will increase the level rating of the assignment.

PORTFOLIOS

Three times during the semester, you will turn in what you consider to be your best work up to that point (since the last portfolio). Collect together your best (corrected) assignments and hand them in as a portfolio. (This doesn't have to be a fancy bound work, just make sure your papers aren't going to go flying around. It is a good idea to have your name on each item as well.) The portfolio must contain a project (2 during the semester) or paper (1 during the semester) as well as a certain total ratings value each of homework and labs and consist of only a certain total number of items. These totals will be mentioned in the portfolio announcement on the web page and/or during class. The announcement is purposely delayed until at least a week before the due date so that you will concentrate on doing and understanding and not meeting minimum requirements.

Any assignments you turn in that exceed the total ratings value for their category will be added to an extra credit pile for review at the end of the semester. This extra credit work will be added to some part of your grade where it will do the most good (typically projects or tests).

Example: If the projects section of a portfolio said the minimum ratings value was 16 and the maximum number of projects were 4, you could choose several different combinations of project ratings to satisfy these requirements. You might choose to hand in 3 projects which were rated 6. You might choose to hand in 4 projects rated 4. You might choose to hand projects in rated at 4, 6, and 7.

You might choose to hand in a 4, a 6, and 2 7's. If you did this, I might place either the 4, the 6, or either of the 7's on the extra credit pile (the remaining items already add up to more than 16). To avoid me picking, you can mark those items you wish to be extra credit with XC or EC or XCred or Extra Credit marked in plain large type/writing at the top.

See also the portfolio page for more information.

LATE POLICY

Due dates (on portfolios) are present for a reason. If you do not turn in your papers by the due dates given, credit may be denied. (Reasonable excuses may be accepted.)

TENTATIVE OUTLINE
Topic(s) Location
Review of Programming Background/Basics Chapter 1; Appendices A & G
Objects and classes in Java Chapters 2 & 3; Appendix F
Built-in Types and Flow Control Chapters 4-6; Appendices B-E, & I
Containing Sets of Data Chapter 7
Review of Searching and Sorting Sections 14.1, 2, & 6
Review of class Design Chapter 8
Inheritance & Polymorphism Chapters 9 & 10
Intermediate I/O Handling and Exceptions Chapter 11
Generic Programming Chapter 18
Introduction to Analysis, Data Structures, and Advanced Design Sections 14.3-5, 7, & 8; Chapters 15-17
The remainder of topics will be covered on an "as time permits" basis.
Advanced GUI Design Chapter 20
Advanced I/O Processing Chapters 19 & 21

Always look for online notes to supplement (and sometimes correct/override) the book information.

I reserve the right to change this syllabus with sufficient warning to you.