CIT-244: Object-oriented Programming 2 with Java
Course Syllabus: Fall 2019 | Instructor: Eric Darsow
Community College of Allegheny County
Course catalog listings
Number and Title: CIT-244: Object-Oriented Programming 2: Java
This course builds on the concepts of software design and development introduced in CIT-130. Review basic Object-Oriented design and program structure in the creation of Java applications. The focus of this course is on Object-Oriented design, data encapsulation, graphical user interfaces, exception handling, multi-threading, Input/Output processes and data structures.
CIT-111: Introduction to programming
CIT-130: Object-oriented programming 1
West Hills: Mondays/Wednesdays 2:45 - 4:50 pm
https://technologyrediscovery.net/#javaoo2 is your home for this course. We will not use BlackBoard.
Introduction to Programming Java: Comprehensive Edition 9th Edition by Y. Daniel Liang. Published by Pearson.
NOTE: Your instructor has purchased over 20 of these from various sources online and has NEVER paid more than $40 for a single copy. Purchasing from the CCAC bookstore will result in a charge of over $180! Yikes! ( And shame on the Pearson corporation which is an enemy of students everywhere.)
Additional Reference Books!
HeadFirst Java: O'Reilley publishes a "Brain-Friendly" technical guide series, and their Java edition has received many positive reviews from CCAC students. This text, however, is very expensive to use as a course material (10c per page!), so it will not be referenced directly in this course. Amazon link
I highly recommend Bruce Eckel’s Thinking In Java which is available for $25 online. Bruce is committed to programmers collaborating and sharing, so he has released editions 1-3 for free online. I encourage you to have a paper copy of the book, but you can also download the entire 3rd edition from his website
A more advanced reference-like text is The Java Programming Language, 4th Edition by Arnold, Ken, Gosling, James, Holmes, David. This book is endorsed by Sun, which is a developer of the Java language itself. For beginner programmers, many concepts here will be explained with more depth than needed, but it is good to be exposed to the deeper technical explanations of the language.
Differences between CIT-130: Object-oriented design 1 and this course, CIT-244: Object-oriented Programming
Third-term classes in any topic (Java, Data analytics, python, etc.) assume that students have decided to make that particular skill an educational priority. In practice, this means:
Greater expectation of out-of-class practice
Dedicating 4-10 hours per week outside of class, spread out over at least 3 days, will dramatically increase the quality of your learning. Brains love repetition and regular practice provides that reiteration.
Command of the documentation
The Java API Documentation can become the first source of reference material for study and direct aid while coding. During CIT-244, your instructor will direct students to consult the official documentation before receiving personalized help in a design or debugging issue.
The following content is extracted directly from the CCAC master course syllabus for CIT 130:
- Employ inheritance, polymorphism and encapsulation by implementing interface and abstract classes.
- Create advanced Swing graphical user interface (GUI) components in a program.
- Apply Java language elements to use error and exception handling techniques in a program.
- Apply Java language elements to use Input/Output streams and file access methods in a program.
- Apply Java language elements to create programs with multi-dimension arrays of primitives and objects.
- Apply Java language elements to create programs utilizing inheritance and class hierarchies.
- Implement ArrayLists using queues and stacks.
- Use predefined application programming interface (API) Java collection classes to manage data in a program.
- Apply multi-threading techniques in a Java program.
Much like search keywords, these are related in some way to the objectives above (I didn't write these) and are extracted from CCAC's master course syllabus for CIT-244:
- Object-Oriented design
- Interpret unified modeling language (UML)
- Java API
- Exception handling
- Data structures
- Abstract classes, class hierarchies and polymorphisms
- Files structure and data streams
- Inner and nested classes
- Protecting class data fields
Honesty in academic courses
Since this course involves no "graded" tests of any kind, nor point awards to assignments, nor letter grades mapped to the number of facts you can memorize, the standard of honesty does not include the notion of "cheating."
Your instructor's central concern is the quality of your learning: can you apply the tech tools we learn about to solving problems or producing some output? Do you understand the fundamentals of your skills?
In order to gauge your progress toward these goals, your instructor must know how the work you do was generated. Since almost all programming tasks involve combining code you've written with code others have written, you are asked to thoroughly attribute the sources of your work with code comments, notes in documents.
Concrete implementation examples
- If you basically transfer-and-replace a snippet of code from Stack Overflow, include the direct link to the post from which you extracted the code.
- If you ask another human for help, and this person gives you statement-by-statement instructions about what to type, note this in the comments before the relevant lines
- If write killer code without any reference, proudly double check the spelling of your name in the author tag in the file header.
We can consider our class like a mini-community of folks who are working on a project together, in this case, we're learning about computer fundamentals. I've done some thinking about how we can work together and stay happy while doing so, and propose the following group norms which hopefully can become shared values by class members. To avoid blobs of text, I've made little cards describing the norms so we can discuss them in class.
Practice & "Homework" structure
One half or more of our in-class sessions will hopefully be practice time with student hands at keyboards, plunking away, and brains whirring. The students' commitment to internalizing the core concepts we practice in class is measured by how regularly they practice outside of class, in a low-distraction environment.
The order in which we learn stuff certainly matters a lot, but exactly when a particular chunk of learning happens doesn’t impact the quality of that learning. With this principle in mind, I accept all assigned work up until the day before CCAC’s college-wide grade submission deadlines (for mid-term and final).
Keeping pace with the class, however, is likely to be very important to your learning process. For example, what we learn in chunk 4 is an extension of what we we’ll study in chunk 3. If you have put off doing out-of-class practice, you won’t be comfortable with chunk 3 stuff and you’ll likely be confused by the new content, and this is do doubt frustrating for everybody involved. So do yourself a favor, and, when possible, schedule out regular time to practice our class skills and work through exercises.
Missing class sessions
Come to class! We want you to be part of the group! I’m here to help you learn stuff, so communicating with me about your class attendance is important so I can help keep you on track with the course.
If you miss class, please find some time in your life to work through whatever exercises have been posted for the day you were absent. Make note on what you would like more support to learn. Then come to office hours (posted on our course website) and ask questions or work through stuff that you couldn’t figure out.
If you miss class and I don’t hear from you, I’ll likely drop you call and check in to see how you’re doing. If you’ve missed 2 class sessions and I haven’t heard from you via email or phone, I’ll probably call you to check in, so best to save my contact numbers in your phone. 412.894.3020
Assessment of Learning Progress
Core assessment principle: The most important outcomes of the course is the degree to which students are comfortable implementing their new skills and knowledge in “real world” situations (i.e. to solve meaningful problems). This will be assessed through a review of the work you post on our course upload repositories and our experiences working together in class.
High-stakes tests, exams, quizzes that make and break grades have generally given the notion of assessment in education a bad flavor in many folks' mouths. We shall, in this course, attempt to take back assessment as a useful tool for figuring out what we know, and what we have yet to learn, and aligning the course to make that happen. Here are some cards describing some assessment mechanisms we'll use in this course:
No heavily weighted tests
This course will not involve tests that are high pressure, completed entirely independently, and heavily weighted. Rather, the course is designed to encourage and support regular practice which leads to incremental learning. Many courses that heavily weight tests end up encouraging students to cram in content learning directly before each major exam, and this often detracts from the regular practice that is likely much more important to becoming a proficient computer user.
Checkpoints (not tests!):
In this spirit, we will have a few checkpoint tasks that are completed during class and involve completing a mini programming project that you have not previously seen. The goal of the checkpoints is to practice your evolving skills and to communicate with me about your learning progress so I can support you as much as possible in meeting your educational goals. They should be prepared for using the preparation guides on the course website, but they are not designed to be stressful or “make or break” in quality. They are literally a checking in about your progress through learning Java. Nothing more, nothing less.
The mini-project for the checkpoints should take approximately 2 hours to complete (the entire class session) and will demand that you apply all of the core concepts learned in the course up to that checkpoint time. (Languages are by definition cumulative, so what we learn during the second class period, for example, will be required for all future classes and checkpoints).
What resources can I use during checkpoints?
During the checkpoint, you will be encouraged to use any and all programming resources that you find helpful, including the Java API documentation and community forums like StackExchange. Of course, your use of these resources must be cited appropriately in your code—through comments—just as you should always do, forever and ever, throughout your programming journey.
I will be around to provide guidance during the checkpoints (not for online sections, sorry), but will be mindful of creating an experience that checks your learning so far, not mine. So I may not answer questions with the same degree of explanation as I might during a normal class session.
You will receive written or verbal feedback on your checkpoint program within a week of its completion.
Course Letter Grades
This course uses a standardized grading procedure that aligns with CCAC’s college-wide grading policies which require teachers to issue each student a cumulative course grade of A,B,C,D or F. Both the student and faculty handbooks associate each letter grade with the following performance-related words:
- A – Superior (4)
- B – Above Average (3)
- C – Average (2)
- D – Below Average (1)
- F – Failure (0)
Core Habits for Meaningful Learning:
- Deliberately practice developing your skills independently and/or in groups – outside of class – a few times a week. Practice distraction free: silence phones, use music sparingly, and work somewhere you can focus.
- Think of computer tools as instruments that can create their version of “music.” Treat them as such and learn your instrument’s ins and outs. Learn how it works on the inside as much as you can—even if it doesn’t seem immediately relevant. It will pay off big time in the future when you have to get it to do new things.
- Monitor for yourself what you don’t yet understand or can’t yet do and systematically exert effort to understand that stuff or do those things.
- Tinker with your tools, and break stuff (code, applications, operating systems, networks) and figure out how to fix it. This is the advantage to learning computers—breaking them doesn’t cost anything like it does in, say, woodworking, where messing up means wasting wood.
- Honor important waypoints in your learning process. (“When it really counts, make it happen.”) by being fully prepared for checkpoints and work sharing events presentations, etc.
- Make explicit note of any learning aids you use (“cite your sources”) during any work you do in this course. Include links to code you heavily reference and make happy note of major breakthroughs you made on your own.
Suggestions for successful technical learning
We are working to learn how to use a computers—really fancy adding machines—to help us do stuff that’s useful like organize, store, and present data. Since computers are very complicated, successful learning should adapt to this environment. The following principles can be thought of as suggestions for building your computer knowledge and are based on my experience learning many new technical topics from scratch over the past few years:
- Find a book, tutorial set, or other learning resource that applies to the topic you’re studying and devour it all. Avoid skipping around and switching resources once you have found one that works with your learning style. This will help maintain a steady learning path and increase the quality of your knowledge.
- Locate the technical documentation for any tools you are using and study it carefully. These materials are usually written and published by the creators of the tools themselves. Become intimately familiar with the way the documentation is structured so you can find the information you need quickly when the moment arises.
- Expect your learning to spiral upward as you learn more and more about the important topics that are connected to your study. Since topics are often interrelated and complex, expect that you’ll need to be exposed to the same topic or idea a few times before it soaks in.
- Find a mentor or friend whose a little more proficient in the system than you are—as him/her/them questions often. Soak up what they know whenever possible. Work together when possible.
- Challenge yourself by not asking for help the moment you get stuck—tinker a bit. Experiment with a solution and see if it works. Working through confusion is an incredibly meaningful step in technical learning, since once you’re doing paid work, you’re expected to know how to solve problems.
Attendance Procedure for Religious Observance
The college will make reasonable efforts to accommodate students who must be absent from classes or miss scheduled exams in order to observe a religious holiday or participate in some other form of religious observance. Students shall be provided, whenever possible, reasonable opportunity to make up academic assignments missed due to such absences, unless doing so would create or impose an undue burden on other students or the College. It shall be the students’ responsibility to provide written notice via the Request for Accommodation for Religious Observances Form (accessible at https://www.ccac.edu/nondiscrimination/) to every instructor for each course in which an accommodation is being requested. For more information contact the Civil Rights Compliance Officer/Title IX Coordinator, Sumana Misra-Zets, at 412.237.4535 or firstname.lastname@example.org.
Accommodations for Individuals with Disabilities:
The college recognizes its responsibility to provide academic and nonacademic services and programs equally to individuals with and without disabilities. To this end, the college provides reasonable accommodations for qualified students and employees with documented disabilities consistent with the requirements of the Americans with Disabilities Act, sections 503 and 504 of the Rehabilitation Act and other federal, state and local laws and regulations. The college maintains an Office of Supportive Services at each campus location to receive, review and evaluate requests from students who require an accommodation with respect to their educational program. Students’ requesting reasonable accommodations due to a documented disability must first register with their campus’ Supportive Services Office and obtain an official letter identifying approved accommodations to be distributed to their faculty members.
Attendance Procedure for Pregnancy and Pregnancy Related Conditions:
In accordance with Title IX of the Education Amendments of 1972, absences due to pregnancy or related conditions, including recovery from childbirth, shall be excused for as long as the absences are determined to be medically necessary. Students will be provided with the opportunity to make up any work missed as a result of such absences, if possible. For more information or requests for accommodations, students should inform their instructor(s) and/or contact the Civil Rights Compliance Officer/Title IX Coordinator, Sumana Misra-Zets, at 412.237.4535 or email@example.com.
Chosen First Name Procedure for Students
Many individuals use names other than their legal first name to identify themselves for a variety of personal and/or cultural reasons. The college seeks to provide an inclusive and non-discriminatory environment by making it possible for students to use a chosen first name on college records when a legal name is not required. Chosen first names may not be applicable in certain programs due to the requirements of accreditation organizations and clinical sites. For more information, please see the Student Handbook