Java books!

Introduction to Programming in Java - CIT 111

Course Syllabus: Spring 2018 ONLINE and in-person | Instructor: Eric Darsow
Community College of Allegheny County

Course Info

Category Content
Registration Classification

Number and Title: CIT 111 - Introduction to Programming Java
Credits: 4
Hours: 4 hrs/week "lecture"
Prerequisties: Basic Math

Catalog Description

This course is an introduction to program design, analysis and programming fundamentals using the Java language. Topics include the software development process, problem solving techniques, simple language basics, data representation and storage, program control structures, classes and their methods.

Prerequisites Basic proficiency in essential math skills

CCAC West Hills (Sec. : Mon/Wed 11:50-1:155p | Room S2113 | First class: 29 Jan

OnLine: 29 Jan - 6 May 2018

Instructor Information

Eric Darsow
Computer Information Technology (CIT) Department
Phone (shop): 412.894.3020

Course Materials is your home for this course. We will most likely not use a BlackBoard course site since the system is a pain to use for getting basic information easily and quickly (and it's closed source software).

Buy Oracle's Java: A Beginner's Guide (6th edition is the cheapest) from a source of your choosing. The link is here.

Aside from this book, we'll prioritize resources that are available for no charge on via the internet, all of which will be linked via our session pages linked on the course schedule.

Additional Reference Books!

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.

Learning Outcomes

The following content is extracted directly from the CCAC master course syllabus for CIT 100:

This course is an introduction to program design, analysis and programming fundamentals using the Java language. Topics include the software development process, problem solving techniques, simple language basics, data representation and storage, program control structures, classes and their methods.

  1. Use a Java integrated development environment (IDE) to design and implement applications on a computer.
  2. Apply basic problem-solving techniques to novel situations that are relatively similar to models introduced in the course.
  3. Use various data types by implementing them in the correct operations.
  4. Create simple graphical user interfaces (GUI) using Swing JOptionPane components.
  5. Use control structures in a Java application.
  6. Utilize class methods found in the Java application programming interface (API).

Course Philosophy

Creativity is a core goal!

This is an introductory programming course designed for students with little or no programming or computer science background. The mission of the course is to cultivate a genuine interest in what makes computers tick and how to communicate with the machines in a useful and creative way. Curiosity and interest in the core concepts of Java and object oriented design will be developed during the course as students are supported in approaching the learning process with openness and eagerness.

We can LEARN to be resilient learners

For a vast majority of students in an introductory programming course, the learning process will involve both organic and exciting discoveries as well as struggles, setbacks, and frustrations. Resilience, therefore, is essential in this process. Thankfully, resilience can be developed with practice. The course activities are designed to support the development of resilience—or bouncing back and pushing onward—in the endeavor of computer programming.

Course Norms

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.

Online Course Structure and Procedures

As an online section, we have no in-person meeting times at any campus. This is convenient, since you can do course work for this class anytime you want, anywhere you want as long as you have a non-phone computer and the Internet.

The online course is organized by week, and each week's learning is laid out in our class session guide page linked here.. Each week runs from Monday through Saturday. You should NOT plan on completing course work for this class on Sundays, since this is when your instructor reviews the work products from the week, posts comments (either written or via video), and finalizes content for the upcoming week.

In other words, your course work is DUE by about midnight each Saturday. Since this course is not managed by Blackboard where there are computer-managed cut-off times for assignments, this is not a "hard" deadline. Sometime around midnight will work out just fine.

Getting help

If you can come to one of Eric's office hours at either North campus or West Hills, please do so. No need to make an appointment. Office hours are posted on the contact page. Since this is an online course, you are not assumed to have in-person access to any CCAC facilities.

A downside to online courses is that you don't have a regular face-to-face meeting time where feedback and learning guidance can be offered in real-time. This means you must seek out help on your own. The best way to get help from the instructor is to call the Technology Rediscovery shop land line at 412.894.3020. The best times to call are posted on the home page's contact section.

Our course will culminate in the creation of a final project to share with the world on the Internet. (You can feel free to request that your project not be posted, but are encouraged to do so and contribute to others' learning in the future. We'll devote the last two weeks of the course to your final project. Check out other students' final projects from past terms here.

Practice / "Homework" structure

As an introductory and overview course, our most important time together will be during class sessions. (If we can't make some solid learning happen with the three or four hours per week we spend with each other, then we're not doing very well!) Given this, most lessons will not require work outside of class. You are, however, encouraged to apply this learning to interesting projects or ideas you have going on in the rest of your life and bring those ideas in to share with the class.

"Late work"

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.

For in-person sections: 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

Core Habits for Meaningful Learning:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Assessment of Learning Progress

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:

Checkpoints (not tests!):

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.

What is a checkpoint?

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

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.

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:

You propose a fair grade, If I agree, we're all set!

Right before mid-terms and during finals, you'll be asked to create a grading suggestion note card modeled after self-evaluations submitted by other students visible in the document linked above. You will be asked to think about what makes the grade you requested "fair" based on your experience with grades and courses in the past. If you and your instructor have a disagreement about your suggested grade, we'll have a conversation by phone (or in person if you'd like). If there is no disagreement, then the grade you suggested will be entered in the computer system.

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:

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

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 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

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