Antelope Valley College, Instructor Charles Costarella
CIS 113 Data Structures - (available only in the Spring semester)
Spring Semester 2011
CRN 35149 CIS 113 Monday 06:00pm - 10:05pm BE 324 02/07/2011 to 06/03/2011
Charles Costarella, Adjunct Faculty
661.400.4623 Cell and Voice Mail
avccis113@gmail.com
Announcements will be posted in this section. Check this section at least 1 or 2 times each week in case of last minute changes.
Date | Announcement |
Week 1 | There is a CIS-111 Yahoo discussion group located at: http://groups.yahoo.com/group/avccis111. While it is primarily there for the CIS-111 students, as a CIS-113 student you are welcome to join this group and participate in the forum if you want to. I would expect you to take more of a mentor role in the group, meaning that you could answer questions and help out the CIS-111 students as well as get information for your own projects. Do not give out extensive code examples or do anyone's homework for them. You need a Yahoo email to join this group, but once in, you can use any email you like. |
Week 1 | Currently, office hours for adjunct faculty have been discontinued due to budget cuts. More information may be available the first few days of the semester, so please ask for an update in class. I may find some limited office hours for those students with special needs on a case by case basis and at my discretion. I strongly suggest you utilize one on one time with me during the lab portion of the class meetings. |
Week 1 | Please note the email address to be used for this course is NOT an AVC email address. For organizational reasons, you must use the class email address. Send all assignments and other email to: avccis113@gmail.com |
Required Materials:
Course Requisites:
CIS Computer Information Science Spring 2010
CIS 113
Prerequisite: Completion of CIS 111 or CIS 161.
Advisory: Eligibility for ENGL 099, READ 099 and MATH 130, and Completion of CIS 121.
This course continues the introduction to programming and algorithms begun in CIS 111,
with a particular focus on the ideas of data abstraction and object-oriented programming.
Topics include object-oriented programming,
fundamental data structures,
design and implementation of abstract data types,
common types of collections (such as stacks, queues, lists, graphs, trees and sets),
algorithm analysis and complexity,
search and sort algorithms,
and the use of recursion.
Students plan and create programs using data structures and collection types
to solve problems frequently encountered by professional computer scientists.
This course is intended for students majoring in CIS.
(Engineering and science majors consult counselors)
(CSU, UC, AVC)
Course Corequisites: NONE
Course Description:
This is a second course for students planning or exploring a career in software development.
This course emphasizes a disciplined approach to computer programming.
Problem solving through stepwise development of algorithms is presented.
Students will learn more advanced language syntax, coding, logic, and testing.
You will study the more advanced mechanisms of Object Oriented Programming,
and use them in your programming assignments. We will use Java as the implementation language.
Topics covered will include static and dynamic data structures and utilization of ADT (abstract data type) techniques.
Programming assignments will utilize Object Oriented design and implementation
of multiple classes/modules with focus on configuration management, code reuse, and
advanced Java language techniques including exception handling, inheritance, polymorphism,
interfaces and abstract classes, inner classes, persistance and object serialization.
We will only work with elements of Java that are considered standard.
Object Oriented Programming will be strongly emphasized.
Course Objectives:
Upon completion of the course, the successful student will be able to:
Rules for Submitting Assignments:
During the semester, you will have 4 or 5 program assignments.
All will be complete Java programs that you write. Some will include work that we will
begin together in a hands-on lab. For each assignment, there will be different deliverables that you must
submit to me to receive credit. I will cover this in detail when I make each assignment.
Programming assignments will include elements from all stages of software development including
requirements gathering, high and low level specifications, design,
implmentation, debugging, unit testing, integration testing, acceptance testing,
demonstrating program correctness, and even modification/maintenance.
Many of the programming assignments we work on will depend and expand on the work you produced
in earlier programming assignments, so lab and class attendance is critical.
IMPORTANT INFO IF YOU WANT FULL CREDIT ON A PROGRAM ASSIGNMENT
/** * A class to manipulate thermostats in the NuclearReactor program. * @author Chuck Costarella * @version 2011.03.15.01 * Chapter 6 - NuclearReactor Program * Page 435 - Exercise 6.13 and 6.15 */
Exams:
Two exams (a midterm and a final) will be given.
They will be evenly spaced during the semester.
The final is cumulative and will require succcessful mastery of the course subject.
You must tell me ahead of time if you are going to miss an exam, so other arrangements can be made.
There may be a programming project assigned in place of an exam at the instructor's discretion.
This project would be of a scope and difficulty level that would substitute for the exam.
Extra Credit:
There will be extra credit available from time to time on
some assignments and exams. It will be of a very specific nature and only as I assign it.
Programs and assignments | 4 or 5 at 20 to 25 points each | 100 points |
Quizes | Undisclosed number of pop quizes at 5 to 10 pts. each | ?? points |
Exams | 2 exams/projects at 50 points each | 100 points |
Total possible | 200+ points |
Letter Grade | Total points range |
A | 180 - 200 |
B | 160 - 179 |
C | 140 - 159 |
D | 120 - 139 |
F | 0 - 119 |
Attendance:
Web Resources for Data Structures and Advanced Java Programming
There is a ton of information available on the web on
Data Structures and Java Programming.
I hope you find one or more of these useful.
Java Applets Center, University of Canterbury | Animated Java Applets showing the behavior of the fundamental linear and hierarchical structures we will study. |
Trees, trees, trees | Animated Java Applets showing the behavior of all kinds of tree structures. |
Programming in Java, by Robert Sedgewick, Princeton University | This is the section of Sedgewick's book covering data structures, but the entire thing is excellent. The book's approach is very much coming from a scientific analysis and real world problem solving point of view. Real world problems and applied solutions using Java but very little emphasis on Java for the sake of Java. I feel one of this book's particular strengths is the use of large and real world data sets as input files. These are issues you will have to deal with in the working world. Just as one example, the complete text of the Bible is here in a text file. Sedgewick is one of my favorite authors and educators and is one of the inventors of the Red-Black tree. The Red-Black tree is the underlying implementation used throughout most of the Java platform's standard library of data structures. There is no Nobel Peace Prize for Computer Science (hey, what's up with that?), but Sedgewick has won the equivalent. |
Data Structures and Algorithms in Java, 2nd Edition by Robert Lafore | The complete text. Use this for another point of view from the Malik text that we are using. This book includes more advanced material, but also has very good coverage of the foundations. |
Data Structures and Algorithms in Java, 2nd Edition by Robert Lafore | Here are the example applets that go with the above text. |
Java Structures by Duane Bailey, Williams College | Prof. Bailey teaches at Williams College in Williamstown, MA. This is his complete Java Data Structures textbook, available as a PDF. He gives you full license to use it and print it for your own use if you want. |
Towers of Hanoi Puzzle | Well known computer science problem used to demonstrate the use of recursion to solve a problem (usually in place of iteration - looping). |
Godfried Toussaint, McGill University | Specific Course Material for COMP-251 as taught by Godfried Toussaint. Actually this is a lot more than just one course. Great reference for all kinds of Computer Science topics. |
Great Java resource page | Maybe this is Frode Haug's webpage? Not really sure what his name is or what language is being spoken/written, but the resources are great and he refers to Robert Sedgewick's C++ and Java books, which are among my favorites. Sedgewick teaches at Princeton (see above) |
Eclipse | Eclipse is an open source IDE for Java development formed by IBM Visual Age for Java and Borland JBuilder IDEs. Eclipse is a professional level tool and it is completely free and tons of Java development shops use it. This is the logical step up from JCreator when you feel like you are ready to grow. |
Americans With Disabilities Act (ADA): Reasonable Accommodation
If you have a legally protected disability under the Americans
with Disabilities Act (ADA) or California discrimination law,
and you believe you need reasonable accommodation to participate
fully in this class, please make an appointment to see me during
my office hours to discuss your need.