GCC  CIS 221 - Advanced computing system concepts  

Click printer for PDF, printable version of this syllabus Print 
Syllabus PDF

Course: Computer Concepts & Programming  CIS 221.01 & . 66 Spring 2017
Genesee Community College    http://www.genesee.edu/it
Instructor: James R. Habermas - online

Email JRHabermas@genesee.edu
Cell (585) 746-9331

Monday and Wednesday ONLINE ONLY 1pm - 2pm
Tuesday & Thursday E124 JAVA Classroom 7:30am-8:00am
Tuesday & Thursday my office D273 or E124 12:20pm-2:10pm
I will always make time for questions at the end of each class. Also you can find me online to ask questions on the weekends.
I check my email 4 times per day, and I use my cell phone for texting 585-746-9331.
Thursday 2/16 Quiz ONLINE
Thursday 3/9 Midterm ONLINE
3/12 - 3/19 Spring Break
Sunday 3/27 Last day to withdraw from a course
Thursday April 27 Final exam ONLINE
Thursday April 27 No Homework accepted after this date
** Dates could be changed based on questions in class ** Will be confirmed in lecutre and on Blackbround anouncements
  1. http://jimhabermas.com
  2. http://jimhabermas.com/javasetup/



EDITION: 10th Edition
ISBN13: 978-0-13-376131-3
Companion 10th edition
Make sure you purchases Student Access Code for MyProgrammingLab

Make sure you remember the Companion Web Site for Lang's book




Nature of the Course:
This course deals with Object Oriented concepts in computer problem-solving and programming. Computer problem-solving can be summed up in one word -- it is demanding. It is an intricate process requiring considerable thought, careful planning, logical precision, persistence, and attention to detail.  (click here for more on Nature of the course)

This course is a continuation of CIS 219.  Advanced computing system concepts, problem solving and systematic program development are demonstrated in problems from a variety of application areas.  Topics can include program development, program testing and documentation, functions, files; advanced data structures:  pointers, stacks, queues, linked lists; recursion, trees, sorting, searching, and object-oriented concepts.  All participants should have sufficient time to do the necessary out-of-class work. 

Four class hours.   Prerequisite:  CIS219 (Programming Languages 1))


Upon successful completion of this course, students will be able to:
1. Demonstrate knowledge of the concept of arrays.
2. Know the steps involved in using arrays: declaring array reference variables, creating arrays, initializing arrays, and processing arrays.
3. Develop at least three methods with arrays arguments.
4. Know how to copy arrays.
5. Write at least two programs using multidimensional arrays.
6. Sort an array using the selection sort algorithm.
7. Search elements using the linear or binary search algorithm.
8. Demonstrate knowledge of objects and classes and the relationship between them.
9. Know how to define a class and how to create an object of a class.
10. Know the difference between object reference variables and primitive data type variables.
11. Demonstrate knowledge of the roles of constructors.
12. Declare private data fields with appropriate get and set methods to make a class easy to maintain.
13. Develop at least three methods with object arguments.
14. Know the difference between instance and class variables and methods.
15. Store and process objects in arrays.
16. Use UML graphical notations in at least two cases in order to describe classes and objects.
17. Determine the scope of variable in the context of a class.
18. Use the keyword this as the reference to the current object that invokes the instance method.
19. Declare inner classes.
20. Use the String class to process fixed strings.
21. Use the Character class to process a single character.
22. Use the StringBuffer Class to process flexible strings.
23. Use the StringTokenizer class to extract tokens from a string.
24. Know the differences among the String, StringBuffer, and StringTokenizer classes.
25. Know how to use command-line arguments.
26. Develop a subclass from a superclass through inheritance.
27. Demonstrate the ability to override methods in the subclass.
28. Invoke the superclass's constructors and methods using the super keyword.
29. Restrict access to data and methods using the protected visibility modifier.
30. Declare constants, unmodifiable methods, and nonextendable class using the final modifer.
31. Demonstrate knowledge of the useful methods (toString, equals, finalize, getClass, clone and hashCode) in the Object class.
32. Know the meaning of polymorphism, dynamic binding, and generic programming.
33. Describe casting and explain why explicit downcasting is necessary.
34. Develop familiarity with initialization blocks and static initialization blocks.
35. Develop a minimum of 10 programs which solve problems from a variety of areas using object oriented methods, creating applications that use objects, and employing the language elements that are listed in 1-34 above.*

* This course objective has been identified as a student learning outcome that must be formally assessed as part of the College's Comprehensive Assessment Plan. All faculty teacing this course must collect the required data (see Assessing Student Leaning Outcomes form) and submit the required analysis and documentation at the conclusion of the semester to the Office of Assessment and Special Projects.

The following list is a detailed list of the course content: Topic by Topic Week by Week

Week 1 & Week 2 - Why Java? Java is OOP - (Introduction and Comparison of C++ to Java)

Week 3 & 4 Introduction to clases in Java

  • Constructors
  • Overloaded Constructors
  • PersonalInformation() class demo
  • classpath
  • Instantiating and Using Classes
  • Encapsulation
  • getters, and setters - methods of a class



Week 3 Functions and Advanced Object Concepts

  • Function Overloading
  • Variable Numbers of Arguments
  • Learn about the this reference in Java
  • Learn about ambiguity

Week 4 Classes (Chapter 2 )

  • Class Definition - use extend
  • Public and Private
  • constants final int LIMIT = 4;
  • Member Functions

Week 5 Initialization

  • Constructors - Overloaded Constructors
  • Send arguments to constructors
  • Array of Objects
  • Where Does Initialization Occur
  • Branching Past Initialization
  • Constant Class Members - static
  • use automatically imported, prewriting constants and methods in Java
  • Sharing Variables versus Passing Parameters
  • Scope and Lifetime of Variables
  • Duplicating Variable Names

MIDTERM EXAM Tuesday March 9, 2017

Week 6 & 7 Storage Management - Dynamic Memory

  • Memory Allocation - Arrays in Java
  • Array Lists
  • New Operators -
  • Handling Problems with Storage Allocation
  • Stacks in Java - LIFO Writing programs that use Stacks in Java
  • Queue - FIFO

Week 8 - 10 Inheritance - Extends in Java

  • Base and Derived Classes
  • Overriding superclass methods
  • Class extends other class
  • Access superclass methods
  • Conversions
  • Work with superclasseses that have constructors
  • Members Not Inherited
  • Protected Members
  • When to Use Inheritance

Week 11 Understanding Swing Components

  • Use the JFrame class
  • Use additional JFrame class Methods
  • Use Swing event Listeners
  • Use JPanel class methods
  • Use the JCheckBox class
  • Use the ButtonGroup classes

Week 12 - 16 GUI Programming Explained

  • Other window objects and methods that you can import
  • Integer Fields Objects
  • Text Field Objects
  • Text Area Objects
  • Declaring Window Objects
  • The messageBox Method

FINAL EXAM April 27th 2017


  1. There will be 3 exams throughout the semester,a quiz, a mid-term and a final exam. The exams are each worth 25% of your final grade Midterm and Final exam dates will be given verbally in class.  All exams are online in Blackboard.

  2. There will be many short and long programming assignments due. For every program please print the output, by capturing the screen and print it to paper for all programs and turn that in to your instructor. All programs must be syntax free. No points will be awarded to programmin code that contains a syntax error, runtime or logic errors.

    Hand in copies of all your source programs, and make sure they have excellent comments, YOUR NAME AND YOUR EMAIL, your program name, date written.  I like your work to be well documented.  At all times staple your work to be turned in to me. Never hand in programs that have syntax or run-time errors.

    The Average grade of all your program assignments counts 20% of your final grade. Homework assignments must be turned in at the start of class time, after that point they will be considered late.

  3. 5% of your grade will be assessed from our programming lab http://www.programminglab.com

  4. Grading

    Midterm exam 25%
    Final exam 25%
    Quiz 25%
    Programming problems assigned in class 20%
    www.programminglab.com 5%

  5. Withdraw from the course

    At any time Prior to 3/27/2017 a student can simply go to Records and withdraw themselves from the course.  A student should really self-reflect and evaluate how they are doing in the course by Mid March.  Also, speak to the instructor outside of class to discuss if a student should withdraw or stay in the course prior to the end of March. The instructor will not withdraw the student, it is the students responsibility. No exceptions.  Watch this date!
    At any time Prior to 3/27/2017

  6. Attendance
    • You must attend the first day of class, and let me know what locations you are going to be taking the proctored exams.

  7. Plagiarism and Cheating
    • Plagiarism and Cheating: Cheating is obtaining or intentionally giving unauthorized information to create an unfair advantage in an examination, assignment, or classroom situation. Plagiarism is the act of presenting and claiming words, ideas, data, programming code or creations of others as one's own. Plagiarism may be intentional - as in a false claim of authorship - or unintentional - as in a failure to document information sources using MLA (Modern Language Association), APA (American Psychological Association) or other style sheets or manuals adopted by instructors at the College. Presenting ideas in the exact or near exact wording as found in source material constitutes plagiarism, as does patching together paraphrased statements without in-text citation. Disciplinary action may include a failing grade on an assignment or test, a failing grade for the course, suspension or expulsion from the college, as described in the Code of Conduct.
    • You only truly learn programming by writing your own code. Do not show your work to others. Each student is required to write his/her own programs. Evidence of cheating or copying would result in a failing grade being given for the course. Plagiarism is using other's words or ideas, or programming code and claiming them as your own. I DO NOT condone working together in groups. Plagiarism will not be condoned and will result in a failing grade for the course. Cheating on an exam will be treated similarly. Also, misuse of the GCC mail system or the Internet or any file on the local network will result in a failing grade being given for the course.
    • You are NOT permitted to view your fellow classmates exams. During an exam, keep your eyes on your own work or you will receive a failing grade for the course.


Programming assignment requirements:

  1. Homework assignments must be turned in at the 11:59pm of the due date listed in your Genesis account. After that point, they would be considered late!
  2. A penalty of 25% per day late will be assessed for late submission for grading. Also, you will NOT be able to re-do an assignment once it is turned in for grading. That 25% off per day counts every day, including Friday, Saturday, Sunday and holidays . 
  3. No program will be accepted at any time that contain syntax errors, run-time errors and/or logic errors.
  4. After 4 days has passed the assigned due date the project is not accepted to be turned in for a grade.
  5. Please make sure your name and email address is the first line of output of every program and in the comments at the top of every program.
  6. All incoming homework exercises and computer exercises should have a top sheet stapled to submitted work. The top sheet should contain the following information:

Your name
Your Email address

Describe the goal of the program. -type the problem desciptions found in the book for the Rectangle program. (document your work)

CIS221.01 - 8:00am on Tuesday & Thursday  in E124

Spring 2017

Title of project - and more documentation. 

Date Due: 02/07/2017

Project done for Professor Habermas, office D273



I encourage my students to keep current, in all the projects.  The last two weeks of the semester  I don't go back and grade old homework that was due.  Thus, this is NOT the class for the student who thinks they can do all the homework at the end of the semester and expect to get credit for it.  Each project builds on some previous knowledge, so make an effort to really learn the previous weeks goals and objectives before you come to next weeks class. This class is just not designed for the student who is always playing "catch up" with assignments.

Potential computer down time is accounted for when assigning due dates. Do not wait until the last minute to complete an assignment. All assignments MUST have internal documentation //REMARKS containing variable explanations, the purpose of program, the purpose of each variable, and the objective of each module.  The more documentation in the program, the better.  You could never have enough documentation.  Add lots of comments in your code.


Cell Phones:

Receiving or sending cell phone calls in classrooms or library is inappropriate and impolite. Please turn them off. NO TEXTING!

Classroom Behavior:

Being a Genesee student requires appropriate adult behavior and respect for others. Do not walk into class late. Do not leave class early. Students who want to learn and listen to the lecture are often distracted when other students get up and walk out of the class, or come in late. Please respect your classmates and your professor.

Accessing an objectionable site (pornographic, hate speech, bomb building etc…) will result in an immediate F for the semester.

Our computer servers are for EDUCATIONAL purposes ONLY! Absolutely no web pages are allowed to be stored on our web servers that would any way generate any interest in collecting revenue, nor should any web page on our server, fake, or simulate any revenue collection. No E-Commerce activities are allowed using SUNY computer resources. Any attempt of inappropriate use of the college servers, will result in a failing grade, and possible legal actions.

Check out the link


for more information on Genesee Community College Academic Computing Policies. Any violations in any of the schools Academic Computing policies will will receive a failing grade for the entire semester.


[A] Dial 1-585-746-9331


**Instructor reserves the right to change this syllabus as required due to weather or class cancellations.



Nature of the Course

This course deals with Object Oriented concepts in computer problem-solving and programming. Computer problem-solving can be summed up in one word -- it is demanding. It is an intricate process requiring considerable thought, careful planning, logical precision, persistence, and attention to detail. In order to be really successful, you need the precision of a mathematician, curiosity of a scientist and the design skills of an engineer. For the same reason, problem solving can be challenging and exciting -- a satisfying experience with considerable room for personal creativity and expression.

It is assumed that students registering for CIS221 have already undergone a course in computer programming using the syntax of Java. This course assumes prior preparation in syntax of Java loops, decision, and arrays. Besides, in order to understand the material covered in the course, students are expected to have suitable mathematical preparation. This course is recommended only for CIS Majors or Engineering Majors or Mathematics majors and those seriously interested in computer programming. CIS 221 is a 4 credit course, with 3 hours of lecture and 1 hours of supervised laboratory work per week.  It is also expected students will work in the lab approximately 4-7 hours out of class time working on their programs.

CIS 221 is a required course for CIS majors and all transferring students into a computer information degrees.  Thus,  the material taught is so basic that every higher level course is built on top of it. You must plan on complete mastery of the subject matter. It is simply not enough to get a passing grade. The minimum acceptable grade for the course is C. That is, if you obtain a D, when you transfer to other colleges you will have to repeat the course, before moving on to higher level courses. 

One textbook reference is never enough for a course of this nature.  Some textbooks are good, but have incomplete sections, not enough detail in one given area.  That is the reason for two textbooks required for this course, to fill the holes or missing areas that one book may or may not have.  Also, many Java and OOP resources can be found on the web.  Ask your professor for addition authors, books or reference if you are having trouble understanding one given subject area of this course.

Hand-written assignments are due in class on the due day indicated (provided by instructor in class verbally). Programming assignments are completed on the computer and should have been run before  the indicated due dates (given out in class). The printouts can be submitted in the first class after the due date. For laboratory assignments, due dates are not shown in the first day handout. Attendance is mandatory. Simple computer tasks to be completed during the laboratory sessions will be assigned. You should be prepared for this time and work commitment to pursue this course successfully.

Finally, you must understand that, at college level, the responsibility for learning lies entirely with the student. My responsibility is to show you the right directions and provide a structured environment conducive to learning. What you will gain out of this course is purely dependent on how eager you are to learn and how willing you are to work hard.

Assignments #5 - Movie Due February 2, 2017 @ 11:59pm

Finish this practial code provided it and add a good Testing program to test all the methods
 The amount of time you put in the testing program will reflect your grade.

The goal of this first assignment is to introduce the key word "class" by having you examine the following code and type it in, modify it if you would like, but save it syntax error free in the folder that is specified by your classpath .

The goal of the code below is to create a non-primitive variable type named Moive that stores two elements, year and movie name.

Next, write a test program, and store it in the My Documents Folder that will test the Movie "class" 

After you initially get the program syntax free and working, then add multiple other private variables, such as majorStar, companyProduced etc...

public class Movie
public int year;//should the class elements be public or private ? Why?
private String movieName;

Movie() //constructor
year = ?;//what would you set year to be if no value was sent to this method
} //end of constructor

Movie(String n, int y)
System.out.println("in constructor with 2 arguments");//remove this output line

//no constructor should every have any System.out.println This I left in to help you debug
movieName = n;
year = ?;//what would you set year to be if the argument of year was sent
} // overloaded constructor

Movie(String n)
System.out.println("In constructor with 1 string argument");//remove this output line
movieName = n;
year = 0;
} // end of overloaded constructor

Movie(int y)
System.out.println("In constructor with 1 int argument");
movieName = "Unknown";
year = y;
} // overloaded constructor

public String getName()
//Add a return statment
} //end of getter...

public int getYear()
//Add a return statment
}//end of second getter

public void setYear(int y)
year = y;
public void setName(String name)
public String toString()
return ("Year movie came out->"+year+" Title->"+movieName);
}//end of toString method
}//end of class definition