Course Syllabus

Course Details

  • Credit hours: 4
  • Meets on Zoom from 9:30 AM to 12:20 PM on Tuesdays and Thursdays
  • The time from 9:00 AM to 10:30 AM will generally be used for lecture and question-and-answer. The rest of the class session will generally be used for lab work, scheduled one-on-one meetings, and virtual office hours.
  • Attendance during course time is strongly suggested -- it's the best time to ask questions about assignments and course content -- and to connect with your classmates. However, it is optional.
  • All lecture videos will be posted to the course Canvas site.
  • If you cannot attend the regular class sessions, you will be responsible for watching the lecture videos (and reviewing other course materials) on your own time.

 

Student Learning Outcomes

Upon completion of this class, students will be able to do the following:

  1. Develop object-oriented Java programs, write reusable components using object-oriented principles, and create programs that employ simple graphical user interfaces.
  2. Develop event-driven Java programs
  3. Design, implement, test, and debug Java programs that use fundamental programming constructs.
  4. Understand how the object-oriented paradigm developed. Compare and contrast object- oriented analysis and design with structured analysis and design.
  5. Demonstrate understanding of different forms of binding, scoping, the stack, the heap, dynamic memory management, and garbage collection.

Detailed Course Objectives:

  • Use standard software development tools to develop computer programs in Java
    (our recommended development environment is IntelliJ IDEA, which you can download here)
  • Understand the basic concepts of object-oriented design, including abstraction, encapsulation, information hiding, composition, and inheritance.
  • Learn the Java object model
  • Learn standard object-oriented design patterns, including the model-view-controller (MVC) pattern.

You may initially find this course challenging and even frustrating.  Programming is a difficult at first, but by persevering you will learn many key concepts that will be useful to you in almost all areas of computer science.  The only way to learn programming is through extensive practice

Instructor Communication and Office Hours

My formal office hours this semester are from 2:00 PM to 3:00 PM on Mondays and Wednesdays. I will be holding office hours on the class Discord server

This is the invite link to the Discord (Links to an external site.)

 Please use the name you use face-to-face as your nickname on the discord, and please do not share this link with anyone not in the class. I will kick out and ban anyone who I don't recognize as a student from my classes.

If you do not already have Discord  installed on your computer or mobile device, you can get it here. If you are not comfortable with using Discord but would like to schedule an office hours session, let me know and I'll meet with you on Zoom.

I will frequently be on the Discord outside my office hour times, but my scheduled office hours are the only time I can guarantee that I will be online and available. If you cannot make my office hours, please contact me and we will schedule a time that works for both of us.

The Discord will be open 24/7. Feel free to hang out there to discuss assignments and class material, but please keep discussions in the class channels more or less on topic -- it's not helpful to your classmates if the class channels are filled up with talk about videogames, movies, and memes. Save that for the #social channel.

Regardless of the channel you're in, please keep your conversations friendly and inclusive. I will be very annoyed indeed if students on the Discord (or in other class forums) use language or behavior that alienates, insults, or excludes your fellow classmates. The use of Discord for class discussion is an experiment, and your use of it this semester is what will determine whether or not we can keep using it going forward.

Discussion forums

There will be discussion forums for each class project, and  I encourage you to ask questions there. Time permitting, I will, and the TAs will, answer discussion forum questions. I also encourage you to answer each others' questions.  However, you should not post extensive snippets of code (more than one or two lines) in your answers to other students' questions. Aim for writing questions and responses that are about class concepts rather than about debugging. "Why can't I store an int in an ArrayList?" is the type of question we're looking for, but "my program doesn't compile, where is the bug?" is not a good question.

Email

I am also available via email at benjaminallen@peralta.edu. I will respond to emails within 24 hours of the time they are sent. For emails sent over the weekend, I will respond on the following Monday.

Textbook or Course Materials

 

  • The required textbook for this class is Starting Out With Java: From Control Structures through Data Structures by Tony Gaddis and Godfrey Muganda. Either the 4th edition or the 3rd edition will work.
  • THERE IS NO REASON TO SPEND A TON OF MONEY ON THIS BOOK. The 3rd edition is just as good as the 4th edition, and I won’t be using any publisher material that requires a scratch-off code or anything like that. 
  • It should be possible to rent the book for fairly little money. It may also be possible to find very cheap used or digital editions.

Required software

We will be using GitHub to store assignments in this class. GitHub (and the git tool that it is based on) is widely used in professional and open-source software development. Please register for a GitHub account at https://github.com/

As mentioned above, we will be using IntelliJ IDEA in this class. Use the free community edition -- basically the only reason to pay money for IntelliJ is if you're a large corporation.

If you already have extensive experience with another Java IDE, or if you're experienced with developing Java programs from the command line, it is perfectly fine for you to continue using your preferred environment. However, I won't be able to provide significant technical support (most of the Java development I've done in my life has either been in IntelliJ or in specialized IDEs for developing Android programs).

Since we will be using git and GitHub fairly extensively later in the class, make sure you know how your IDE interfaces with git.

Assignments and Grading

Homework

There are two types of homework assignment in this class:

  • Short assignments. These will be given every week, and are designed to be completed that week. These assignments meant to give you practice with new syntax and new concepts.
  • Projects. These will be due once every two to three weeks. These assignments are designed to demonstrate your ability to use the concepts from class to produce meaningful programs.
  • Late submission penalties: 
    • More than three days late:   10% penalty
    • More than two weeks:   20% penalty
    • More than three weeks: 30% penalty
    • More than a month:      No grade 
  • Projects turned in by the due date will receive a 5% bonus.

Quizzes

There will be short quizzes on course material every week. These quizzes are not time-limited, and you can retake them if you are not satisfied with your score. They are meant solely for you to make sure that you have understood that week's material.

One-on-one meetings

Once a month you will be required to schedule a one-on-one Zoom meeting with me, so that we can discuss how the class is going for you and so that I can get feedback on what is or is not working in the class. If you have conceptual questions about the material, this is a good time to ask them. 

Exams

There are no exams in this class.

Extensions

Our students come from varied backgrounds and can have widely varying situations and necessities. And, needless to say, we are currently experiencing a global pandemic. If you have any unforeseen or extenuating circumstances that arise during the course and that may prevent you from completing course material in a timely fashion, please reach out to me so that we can discuss your situation.  If you need an extension on a one of the major assignments, PLEASE ASK WELL IN ADVANCE. I won't respond to requests for extensions the night before the assignment is due. (I'm not kidding here -- I'll just ignore them.)

 

Important Notes

  • Accommodations

    Academic Dishonesty and Cheating

    Please carefully read the policies and contact me if something is unclear.

    • It IS reasonable (and a good idea!) to discuss your ideas and your programs with your classmates.
    • It is NOT reasonable to copy solutions from your classmates
      • To avoid accidentally setting off my plagiarism detector, I recommend that you avoid looking directly at each others' code. Talk about how your code works, think up ideas to improve your code, but don't show your code.
    • It is NOT reasonable (or a good idea) to copy-paste code from stackoverflow or other similar sites. 
      • If you must use a short snippet of code from the Internet -- one or two lines at most -- include a comment indicating where you got it from and how it works. I reserve the right to ask questions to make sure you understand the code you've used
      • That said, I don't recommend using stackoverflow (and other similar sites) as references. Generally the answers they give to questions are geared toward the needs of working professional programmers, and involve portions of the C++ language that we will not cover in this class
    • If you directly copy someone else's code, the penalties will be severe. You will receive at the minimum an F in the class
    • It is not a good idea to copy someone else's code and then make small tweaks to make it seem like original work. To make this type of plagiarism very difficult to do, I will be using a plagiarism detector that implements the ideas discussed in this paper by former UC Berkeley/current Stanford CS Professor Alex Aiken
      • If you are considering copying work from other students or the Internet, please read that paper and revise your program to evade the plagiarism-detection methods it uses.