Intermediate Programming and Data Structures

Objectives

Professor

Textbook and Software

Attendance

Grades

Exams

Lab Assignments

Written Assignments

Rules on Giving/Getting Help

Lecture Topics

Labs


Objectives

Upon successful completion of this course the student will

  • be a competent Java applications programmer
  • be sufficiently familiar with the LINUX environment so that he or she can write, edit, and execute Java programs
  • be able to employ features of Java such as inheritance and polymorphism in addition to the object-oriented design that was begun in the first course
  • be able to write recursive functions to solve a variety of problems and appreciate both the advantages and disadvantages of such techniques
  • know what is meant by an abstract data type and be able to implement standard ADT's such as stack, queue, and table by means of classes and
  • begin to understand some issues of efficiency in the context of algorithms and implementation

Professor

Dr. Christine Shannon 
Olin 115 
Phone: 5406 (Office) 238-7422 (Home) 
e-mail: shannon@centre.edu 
You might also be interested in visiting my home page at http://web.centre.edu/shannon/.

Office hours: I am generally on campus every day between 8 a.m. and 4 p.m. and often later than that.. If I am not in class, I am usually in my office or one of the computer labs. I will try to observe the following office hours and will notify you if I won't be available.  I teach in D and G block this Fall. I also have two labs. on Tuesday.

M,W,F: 8:30 a.m. - 10:00 a.m.
2:00 p.m. -3:00 p.m.
Th:
9:00 a.m. - 11:00 a.m .

Please feel free to come by at other times and you are always welcome to make an appointment. 

Textbook and Software

Dale, Nell, Daniel T. Joyce and Chip Weems,Object-Oriented Data Structures Using Java. 2nd Edition. Sudbury, MA : Jones and Bartlett Publishers 2006.

DePasquale, Peter J. Java Backpack Reference Guide. Boston: Pearson Education, Inc, 2005.

If you want to get your own copy of Java, here is a helpful website that will show you how to get the right files and write your first program. http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win32.html

Attendance 

I expect students to be present for all classes and labs. Please let me know in advance if you must be absent for a scheduled college activity. Illness might prevent you from being present for a couple of classes during the term but anything beyond that will probably have a detrimental effect on your grade. Those of you who must be absent for college sponsored activities should be particularly careful not to miss any other classes. It is very important that you be present for all examinations.

Documentation will be required before you are allowed to make up a test. Only the Associate Dean can make exceptions to the final exam schedule. If you have a good reason to be absent from class, you are still responsible for the homework assignments. Except in the case of serious illness, all assignments are to be turned in on time. 

Grades

Your grade for the course will be determined by the following: 
Tests (3) 100 points each
Homework/Lab/Classwork 150 points 
Final Exam 150 points

Your final grade will be determined by the total number of points you accumulate out of the 600 possible points. There is 150 points based on written homework assignments, programming projects, and classwork, as well as on what you do in lab. Borderline cases will be determined by improvement on the final and participation in class. Students who are ill-prepared, miss class, or otherwise fail to live as responsible citizens will not get the benefit of any doubt, and in the case of excessive absences, will actually receive a lower grade than they might otherwise. Your contribution to the scholarly environment is very important. I will use a 15 point grading scale so that you are guaranteed an A or A- if you score 85 or above, a B-, B or B+ for 70-84, C-,C or C+ for 55-69 a D for 45-54 and anything lower is failing.

Exams

There will be three exams on Monday, February 25, Friday, March 28, and Wednesday, April 23 . There will also be a cumulative final during the final exam period on Friday, May 9, from 7:00 - 10:00 p.m. .

Lab Assignments

CSC 223 is taught with a laboratory component. Each week there will be a two-hour lab with specific assignments to be accomplished. Sometimes there will be additional work that you must complete and submit at the next class meeting. Unless otherwise indicated, you should complete the work on your own time if you do not finish during lab. In general you will not be doing a great deal of programming during this time, but you will be modifying and using functions that are provided to you. This is not a substitute for programming projects. It is very important that you be present and on time for every lab. In case of an excused absence, you will be permitted to complete the lab. An unexcused absence will lower your final percentage by 5%.

Written Assignments 

There will be reading assignments and exercises assigned each day. These will be discussed at the next class meeting.. There may also be some exercises and programming assignments which I will collect and grade. Programming assignments in this course will generally be much more extensive than what we did in the first course. We will be making more effort to write well documented code and clearly written reports. Generally the quality of your documentation and testing will be a part of your grade. Cooperation in lab will be encouraged.

All work must be submitted on time. Late projects will be penalized 10% per day. I do not accept other assignments past the deadline but there will be some "grace" at the end of the semester.  Unless the project is specifically designated as a team project you are to work independently. When an assignment is to be completed by a team, the teams are to work independently. You are responsible for safeguarding the security of your accounts. You should NEVER give your password to another person or permit someone to read your code (unless another member of YOUR team is checking your work.) You must give credit BY NAME to any person who assists you in completing an assignment. Failure to acknowledge such help is PLAGIARISM and will be dealt with accordingly. 

All students will conclude their project with the statement: 

This is my own work except for the help from the persons whom I have noted above. I gave help to the following students: (list names). Follow with your signature. 

General Rules for Giving/Getting Help

If you are seeking help: Another person may read your code if you are trying to find a bug. You must acknowledge their help and indicate that they read your code as part of the documentation. You may not read another person's code but it is permissible to talk about the solution of the problem (not the actual code). Anyone with whom you discuss the problem, must be listed in your documentation. 

If you are giving help: you may read another person's code if you are looking for an error. It is their responsibility to list you as a resource. You may not allow another student to read your code "to get the idea". It is permissible to talk about your solution but be judicious about the hints you give. Again, the other student is responsible for listing your help in the documentation.

Lecture Topics

Week Topic
1 Intro to Java and Software Engineering
Java Classes
2 Abstract Data Types, Testing,
Intro to Linked Lists
3 Operations on Linked Lists
4

Stacks (Array Based and Linked)
Exceptions
Test

5 Recursion
6 Queues
7 Comparable
8 Test
Reference Based List
9 Variations on Lists
10 Trees
11 Heaps
Intro to Graphs
12 Hashing
13 Hashing continued
sorting