Course Syllabus
C S 1B, INTERMEDIATE SOFTWARE DESIGN IN JAVA
4.5 Unit(s)
Prerequisites: Prerequisite: C S 1A or 1AH.
Advisory: Demonstrated proficiency in English by placement as determined by score on the English placement test OR through an equivalent placement process OR completion of ESLL 125 & ESLL 249.
Grade Type: Letter Grade, the student may select Pass/No Pass
Not Repeatable.
FHGE: Communication & Analytical Thinking
Transferable: CSU/UC
Online-only section.
This is an online-only course with no scheduled on-campus class meetings. However it is a 12 week course and is NOT self-paced. You must complete each module on the Modules page in order to proceed to the next module. Online student team meetings are mandatory.
Student Learning Outcomes
- A successful student will be able to use the Java environment to define the basic abstract data types (stacks, queues, lists) and iterators of those types to effectively manipulate the data in his or her program.
- A successful student will be able to define and use Java generics to make their data and algorithms work with a variety of data types.
- A successful student will be able to write and debug Java programs which make use of inheritance, i.e., the "is a" relationship, common to all OOP languages. Specifically, the student will define base and derived classes and use common techniques such as method chaining in his or her programs.
Course Description
Systematic treatment of intermediate concepts in computer science through the study of Java object-oriented programming (OOP). Coding topics include Java interfaces, class extension, generics, the Java collections framework, multi-dimensional arrays and file I/O. Concept topics include OOP project design, inheritance, polymorphism, method chaining, functional programming, linked-lists, FIFOs, LIFOs, event-driven programming and guarded code.
S.1 Course Overview
CS 1B is an in-depth study of essential intermediate computer programming techniques using the Java language. Class inheritance, generics, elementary data structures and the Java Collections Framework are among the many topics that will be covered in depth. Successful completion of CS 1B is required in order to continue with CS 1C, which is the study of algorithmic analysis and data structures, the centerpiece of all Java-based CS degree programs and vocations.
S.2 Instructor
My name is Dr. Baba Kofi Weusijana
Pronounced: Bah-bah Co-fee Way-ou-see-jah-nah (hear my name pronounced)
Please call me "Dr. Weusijana" or "Baba"
Office Hours: Look for my announcement regarding my online office hours.
I can also meet students by appointment via Zoom or the telephone. I'm often online Saturday afternoons and Sunday mornings.
Contact Info:
The best way to contact me is through Canvas from the relevant assignment. Otherwise you should ask questions through Pronto or the private Canvas Inbox and only use email if you have trouble logging in. If you use the Canvas Inbox, or e-mail, I might miss your message and might not have the proper context for it. I might take 3 business days to respond to Canvas Inbox and e-mail messages.
To contact me anonymously use this Google Doc form.
S.3 Text and References
All of the important concepts will be covered in my modules. The textbooks for the course are recommended as references and are not required. They are both available as FREE e-books from the Foothill Library.
Horstmann, C. (2020). Core Java. Volume I, Fundamentals (Eleventh edition or later). Pearson.
You must have some reference so you can use any relevant Java textbook that fits your style and budget.
You can also order books through the Foothill Bookstore at http://books.foothill.edu/, phone: (650) 949-7305.
S.4 Integrated Development Environment (IDE)
You will need a (free) software package called an Integrated Development Environment (IDE). In this class we will be using a product that runs on Linux, Macs, and Windows PCs called Eclipse. If you are facile on another IDE, you are welcome to use that, instead. However, my assistance in the forums regarding compiler specifics will be limited to Eclipse.
S.5 Communication
Office Hours: My regular office hours will be held online. I will schedule those after everyone completes the Welcome Survey.
I can also meet students by appointment via Zoom (even at night or over the weekend) so contact me for an appointment.
I also reserve the right to schedule online meetings with you, so check your email and Pronto daily for such requests.
Contact Info:
The best way to contact me (and your fellow students) is by using the integrated Pronto tool. I reply to such messages within 1 business day. You can also contact me through Canvas by adding a comment while submitting to the relevant assignment (you can submit partial work, with comments, as early and as often as you like to Canvas assignments). If you use the Canvas Inbox, or e-mail, I might miss your message and might not have the proper context for it. I might take 2 business days to respond to Canvas Inbox and e-mail messages. You can forward text messages to my email.
To contact me anonymously use this Google Doc form.
Announcements & Course Backup Plan:
I will make announcements to this class via email or Pronto, so keep an eye out for those.
Each day please log into this course's Canvas website and also check Pronto and the email account you gave registration. That way you will be able to get any announcements from me, including instructions for how this course will continue in the event of an emergency.
Foothill College instruction and services are generally virtual at least through Spring Quarter 2021.For information on Foothill College's services and changes during the COVID-19 crisis, please read our Virtual Campus page!
Public Forums
Questions and comments should be posted to Pronto. If needed I will reply within a business day (but usually within a few hours). Unless a question is of a private nature (i.e. grades, registration issues), please use Pronto. Also, feel free to answer your fellow student questions even if you only have a guess as to what the answer is. It's great to engage in conversation with each other in this manner. No points are awarded for contributions, and there are no weekly requirements, but it's good collegial form to participate, inquire and assist.
First Week Required:
You must post an introduction to the "First Week Introductions" Canvas Discussion forum in the first week of enrollment or you will be dropped as a "no show" the next week according to the college requirements.
Do Not Post Homework Code:
Whether you have a question or suggested answer, never post exact homework code to any forums. Create a separate small program to display your issue or illustration.
Private Messages
Please use public Discussions forums for any question or comment that involves understanding the modules, tests or assignments. If you have a confidential question (grades or registration) use the Canvas Inbox by first clicking on Inbox at the far left, then selecting this course and your intended recipient (usually me.)
Posting Program Code
You can post code to the public discussions that is not directly from your assignment. If you have an assignment question, translate that into a piece of code that does not reveal your answer or submission, exactly.
When posting code fragments (i.e., portions of your program) into questions, make sure these code fragments are perfectly indented and that they are properly formatted.
Do not post entire programs and ask "what's wrong?" or "is this good?" That indicates you have not tried to narrow down the problem. Find exactly what you want to know about and post only that part of the code.
The Online STEM Center:
The Online STEM Center is offering drop-in tutoring online via ZOOM. Our instructors are scheduled throughout the day to help you one-on-one. Don't be stuck or fall behind. Take advantage of this wonderful free service Foothill College makes available to all students. They hope to see you soon!
Students can access information about the Online STEM Center in 2 ways:
- Click the Student Support Portal via CANVAS, Click "Go to Tutoring" on Tutoring Tile
- Click "Foothill Tutoring" menu option in your CANVAS course
Food Pantry
S.6 Where Everything Happens
Access the various areas of your course by first selecting this course through the Canvas Courses choice in the far left, then exam our course navigation menu, also on the left side of the screen, but slightly to the right of Courses, the Home and Modules links are the most important so they are at the top while the rest are listed in alphabetical order.
S.7 Grades
Your grades are based on programming lab assignments (75%), quizzes, surveys, and course participation (25%).
NOTE: This course will use Foothill College's default grading scheme without curving any grades: If you get 100% of the points possible, you’ll get an A grade. If everyone gets 100% of the points possible, everyone will get a A. Please make an A grade your goal, it is totally possible and common in my course!
| Name: |
Range:
|
||
|---|---|---|---|
Please note that the grades of A+ and C- are NOT available.
S.8 Drops and Withdrawal
For a complete reference of all withdrawal dates and deadlines refer to the Foothill College registration page at the college web site here:
foothill.edu/calendar
To stay enrolled in this class, you must participate regularly in your lab assignments and exams. This is part of the class participation that online classes must possess in order to maintain their transferability and accreditation.
You will be dropped by me for any of the following:
- Missing a scheduled appointment, quiz/survey, or final exam activity without prior notice will result in an automatic drop or receiving a failing (F) grade. I will usually try to contact you first, but that is not required.
- If you do not login for nine (9) consecutive days I will drop you. (See exception below.)
- If you receive a zero on any two lab assignments, I will drop you. (See exception below.)
- If you do not post an introduction in the first week, you will be dropped for non-participation.
- If you do not completely participate 2 or more weeks you will be dropped for non-participation or you will receive a failing (F) grade (See exceptions below).
Exception to Above Policies:
If the non-participation that has just been described occurs partially beyond the last date to drop, I may not be able to drop you, and you may receive whatever grade that your points dictate. Therefore don't assume that you can simply stop participating late in the quarter and you will be dropped. If you intend to drop please do so yourself, so you don't accidentally end up with an unintended "F."
If you decide to drop the class, please let me know. I cannot allow anyone who has dropped to continue to have access to the material.
Missing Days and Make Ups:
If you notify the instructor at least one week prior to an exam or quiz, it may be possible to take the exam or quiz at a different time than the scheduled date – this different time will be on the same day if possible, or typically on a day prior to the exam otherwise. No make-ups will be given for exams, presentations, or other such graded events, that were missed without prior notification to the instructor. In any case, the notification of absence must be given at least 2 days before the exam/quiz/survey/event. The only exceptions are documented medical and other emergencies (you can forward text messages to the professor's email). Detailed information about Foothill's Health Services are available at the Health Services website.
S.9 Collaboration
Working together on individual homework = ZERO + Notification to the Dean of Students
Spouses, roommates, and friends taking the course together: don't discuss ungraded individual homework with each other outside the public forums. Instead, direct all of your questions to the public forums where everyone can comment and I can moderate the discussion. Do not look for answers on cheater web sites or pay-for-help web sites.
Any variation of collaborating or copying individual programming lab assignments is prohibited. The general rule of thumb is to type your own code! An individual assignment must be 100% your own work. Changing a few variables around to make them look different won't fool me. And if it does fool me, you probably had to change so many things that you knew enough to do it yourself in the first place.
You can talk about the modules all day long off-line if you wish. This rule only applies to individual lab assignments. There is a place to ask for help with homework: the course forum on Pronto or the STEM Success Center. I will spend hours helping you each week, both individually, and in groups. You can even answer each other's questions in Pronto. If I think you are giving too much information away, I'll edit your post. So there is no reason to ask your fiancée or your cousin's neighbor's lead guitarist.
If you accept help from someone who is not trained to teach without giving away the answer, it will short-circuit your learning process -- you will actually become a worse programmer. Now, you don't have to agree with me - but you do have to follow the rule. In this class we do some assignments in groups, but for individual assignments, you are agreeing to do them on your own or with help from us, here, in this course's public forum.
For those of you wishing to give help, please do not give away the answer. Either tell the person where they can look to find the solution, give them a general idea or ask them to ask me. Don't post actual assignment code.
S.10 How to Ask a Question
All relevant questions are welcome, just make sure your question is asked well in a good format: Make it specific. An example of a badly asked question is, "My program doesn't work. Here it is. Would you please see if you can tell me what I am doing wrong?" An example of a asking a question well is, "My program doesn't work. Through trial and error I have determined that the problem lies in the following five lines, but I can't seem to narrow it down any further. Can you help?" The second students' question made an attempt to organize and isolate the problem prior to asking for help. When they get my answer, they are sure to remember it because they are prepared to hear exactly what they need to know.
Another example: BAD: "I don't understand the assignment. I'm lost. Please help. Jackie." The reason this is a bad question is that there are a million things I might say to get Jackie on the right track, but I can't know which ones to focus on because I don't know where Jackie's misunderstanding lies. Jackie hasn't helped be help Jackie. GOOD: I understand the homework description up until you say 'XYZ'. But I'm not sure what you mean by 'XYZ'. In the lectures 'XYZ' seems to be ... but here it seems to mean something different. From that point on, things get hazy because of this mismatch. Would you resolve this apparent difference for me? Jackie." Here, Jackie has told me exactly the first point at which Jackie is confused so I know what to tell Jackie.
I am not discouraging questions: I want you to ask. Through them, I get a chance to communicate with you. But narrow down the question. Show me you have tried to answer it and have made some progress. Show me exactly where you seem to be faltering so I can know how to help you. The same holds true if you are posing your question to a fellow student or to the whole class.
S.11 To Obtain Disability-Related Accommodations ...
Please contact Disability Resource Center (DRC) at the start of the quarter or as soon as you become disabled. To contact DRC, you may:
-
Visit DRC in Room 5400
-
Email DRC at adaptivelearningdrc@foothill.edu
-
Call DRC at 650-949-7017 to make an appointment
More information is available at https://foothill.edu/drc/ .
If you already have an accommodation notification from DRC, please contact me privately to discuss your needs.
S.12 List of Weekly Content
- Week 1 - Review of OOP, Strings, Eclipse, static, instance methods, the this reference.
- Week 2 - Review of arrays, sorting, recursion, binary search.
- Week 3 - Binary, hex, bit operators, Cellular Automata, multi-dimensional arrays, stacks, multi-file projects.
- Week 4 - Inheritance, method overriding, constructor chaining, inner classes.
- Week 5 - Java GUI programming, Swing, events, listener classes, RPN calculator.
- Week 6 - Applets, JPanels, guarded code, exception throwing and catching.
- Week 7 - Abstract classes and interfaces, the cloneable interface and deep copies.
- Week 8 - Abstract data types (ADTs), Java collections framework, ArrayLists, Dequeues, PriorityQueues, iterators.
- Week 9 - Java generics, File I/O.
- Week 10 - The tree ADT, traversals, multi-threaded programming
- Week 11 - Function Chaining, Intermediate File I/O, and revisions.
- Week 12 - Finish remaining revisions and final exam activities.
You can access the official course outline of record for all CS courses here:
From that page, select Dept: Computer Science → Search, and from there, select any CS course whose official outline you want to review.
S.13 Tentative Course Calendar, Activities, and Due Dates
Your professor reserves the right to change the assignments, activities, and their due dates.
S.14 Weekly Activities
Every week you have two lessons, or Modules, to study and one Lab Assignment to turn in. There are exceptions (see calendar, below), but this is the basic format. This course is a lot of fun, and a lot of work. To pass it you have to make time to do all of these activities.
- Study all the materials in the Modules.
- Discuss course topics in the relevant Canvas discussion and Pronto forums. Attend office hours and workshops (lead by a student tutor) if needed.
- Complete the Lab Assignments, including some Pair-Programming team assignments online. Some of these involve possible revisions and some are peer-reviewed.
Weekly Time Estimate (outside of course meetings)
- Module Reading - about five hours. This includes pasting code into your IDE and trying it out.
- Lab Assignment - about six - 10 hours. This varies greatly with individuals. Some students take one hour, some take 20 hours.
Typical Week
Here is the day-by-day breakdown of a typical week. Some weeks differ, but this will help you understand approximately what you are facing on a weekly basis. I usually post lecture videos twice a week on Tuesdays and Thursdays. Each week's work is typically due by 11:59PM Sunday night to accommodate those who can only do homework on weekends. Do not try to get everything done within a single day, even during finals week! Plan to spread about 14-15 hours across the week with no more than 7.5 hours a day (ideally about 4 hours a day for 4 days). Most weeks you will work 2 to 4 hours on a team assignment, with another student, using the Pair-Programing agile practice online.
| Monday (first 2 or 3 weeks only): | Read resource module R |
|---|---|
| Before Tuesday's Video: | Read module A |
| Before Thursday's Video: | Read module B |
| Sunday: | Lab Assignment due |
S.15 Other Activities: Discussions, Announcements, Tests
Discussions
You can ask me or other students questions in via Pronto. I hope you will be active in this area. Read through the recent Pronto posts every time you log in to make sure you gain the benefit of other students' questions.
Other than the first week's introduction, you are not required to post every week. However, if you are having difficulty, you should reach out and ask questions.
Please phrase questions in plain English or use non-homework code examples to demonstrate your question or suggested answer when posting.
Code fragments must be formatted according o course Program Guidelines to receive an answer. Otherwise, we'll ask you to fix the formatting and we'll check back to answer the question once the formatting is achieved.
You must also post an introduction in the first week to avoid being dropped as a no-show.
Announcements
You will see an Announcement area in the Canvas course tools menu on the left. The latest couple of announcements will also be at the top of the Home page. Check that area and Pronto every time you login for late-breaking news.
Tests
There are no longer any two-hour exams in this course, but there will be some quizzes and during finals week (usually the 12th week) there will be some final exam activities that you must complete to pass this course.
Optional Modules
There is an occasional Module C in some weeks. I did not put this on the calendar. These modules constitute optional reading meant for advanced and ambitious students.
Assignments / Homework and Feedback:
The terms “homework” and “assignment” are interchangeable, and everything that I say here that applies to one, applies to the other.
Once homework has been graded, I’ll return it to the class, either electronically or in print (usually via the Java Code Critic so I can provide detailed feedback). You might then have the opportunity to revise your work (in whole or in part), and re-submit your work for a re-grade.
This approach to re-grades is sometimes referred to the “mastery approach”. The higher grade of the two will be your final grade for that homework assignment.
There are a couple of caveats: when you resubmit your work in this way, I reserve the right to not just re-grade the work, but also check to make sure that the work is correct, and may then follow up with email or verbal questioning of you. I might contact you via your email or phone number to setup an appointment to meet with you.
I reserve the right to assign you additional problems, if I feel that your grasp of the concept is shaky. This will be to your benefit, since the best way to learn how to program is to do it. You have approximately 1 week (sometimes longer) from the time the class gets the graded assignment returned to submit your revision. This means that if you are absent on the day that an assignment is returned to you, and haven't made prior arrangements with the instructor, then you will still only have 1 week after the rest of the class got their grades to do your revision.
If you are too far behind you might end up not having the chance to do a revision. You may only submit one revision per assignment.
If you haven't submitted the initial version of the homework assignment by the time that the instructor goes to grade it, then you can still submit it on or before the deadline for the revision, and it will be graded without penalty but you will NOT BE ALLOWED TO FURTHER REVISE that assignment.
If you haven't submitted a revision to a homework assignment by the time that the instructor goes to grade it then you will keep the initial grade for the homework (if you didn't submit the initial version either, this means that you will receive a zero for that particular assignment, and the Instructor HATES to assign zeroes).
Late Policy:
Any work that is not submitted to the instructor for grading will be assigned a grade of "0".
The general policy for work that is submitted electronically is that your grade is not penalized for being late unless the instructor goes to grade the work and finds it to be missing.
In practical terms this means that if the instructor hasn’t graded something yet you can (typically) still upload the work and have it be graded as if the work had been handed in on-time (i.e., penalty-free). The instructor will wait until the work is due to grade it (of course), but makes no guarantees about waiting any longer than that.
In other words: for work that the instructor has not yet graded you can take your chances that the instructor will be back-logged enough for you to get the work done and submitted but if the instructor grades it before you can finish (including submitting) the work then you will get the zero for not having it in on time. I recommend you don't take such chances! The instructor will no longer accept nor grade submissions for assignments once instructor solutions have been distributed.
Missing Weeks and Make Ups:
If you notify the instructor at least one week prior to an appointment or quiz, it may be possible to reschedule it to a different time than the scheduled date – this different time will be on the same day if possible, or typically on a day prior to the event otherwise. No make-ups will be given for quizzes, presentations, or other such graded events, that were missed without prior notification to the instructor. In any case, the notification of absence must be given at least 2 days before the exam/quiz/event. The only exceptions are documented medical and school emergencies (you can forward text messages to the professor's email.
Grading Disagreements:
Any disagreements about your grade should be brought to the instructor's attention immediately (waiting is always a sad mistake).
Unless stated otherwise, all work should represent your own original, independent thinking. Unless stated otherwise, all out-of-class assignments are not meant to be group projects. While in the classroom working on exercises, you are encouraged to either seek help or to offer help from those around you. It’s a programming party!
It is okay to talk with classmates to clarify conceptual understanding necessary to complete assignments. However, copying another person’s work in whole or in part, either manually or electronically, it not acceptable; nor is copying and slightly modifying another person’s work acceptable. Type your own code! You are here to increase your own knowledge and understanding and your exams' scores will be based only on your own knowledge and understanding, so type your own code. In the event copying should occur: all participants in the plagiarism (both the person plagiarizing, and the person whose work was taken) will receive:
1. A 20% penalty on the first offense
2. A grade of zero for the second offense, and
3. For a third (and final) offense, all parties will be given the option of either withdrawing (if the drop deadline hasn't been passed) or taking a "0.0" for the term.
Second (and third) offenses include offenses from prior terms. A description of all such incidents shall be forwarded to the Dean of Students office, where a file of such occurrences will be maintained.
Group projects are learning exercises like individual projects: every individual in the group is expected to understand all the material as if each person had done the entire assignment individually. Therefore, it is fair game to ask any person in a group to explain any aspect of the assignment that the group has done.
If you accept help from someone who is not trained to teach without giving away the answer, it will short-circuit your learning process -- you will actually learn less. For those of you wishing to give help, please do not give away the answer. Either tell the person where they can look to find the solution, give them a general idea or ask them to ask me. Don't post actual assignment code. Do not look for answers on cheater web sites or pay-for-help web sites.
Electronic Submission:
I would like you to electronically submit all assignments. You should type all assignments & homework answers into the computer (including essay questions), make sure it runs correctly, and submit the files for any given assignment. Usually this will be done using the Java Code Critic. More details will be given in class how to submit assignments.
Today’s technology is inherently unstable: Your network might go down, your Internet Service Provider might be down, the public library might not be open, you might be unable to get Microsoft Word to do exactly what you want. While you might have this happen to you, it’s not an excuse for handing in an assignment late! Knowing this, you should include time in your schedule to compensate for possible technological snafus. For assignments having a hard deadline, no leeway will be given for failing to hand in work because of technological problems unless you contact me immediately.
Attendance:
You are responsible for what goes on in this course and during course related meetings. You are responsible for making up any work, assignments, quizzes, etc., for missed meetings/appointments.
Attendance is very important, since the course is structured to require active involvement and participation on the part of the student. It is difficult to catch up once you fall behind. Daily attendance records will be kept.
Other Notes:
The number of projects and the points possible for exams, projects and activities are subject to change depending on the circumstances of the class. I reserve the right to modify any and all aspects of the course, any time, without prior notice, including this syllabus.
Course Conduct and Courtesies
Following these simple guidelines will help me to offer an enjoyable teaching environment for you. You are expected to come prepared to class related meetings and on time as scheduled. Coming late and/or unprepared is disrespectful and may result in point deductions. If you have any personal concerns, please contact me immediately!
Please remember to respect the following list for me and the students in course related meetings and forums.
* Please remember to respect other students and your instructor by not using inappropriate language.
* Please silence your mobile devices such as cell phones.
* Do not play computer games or visit gaming websites during coursework times.
* No chat or messenger programs during coursework times.
* Do not use personal audio devices such as MP3 players or cell phones during coursework times.
* No Internet surfing, texting, or other mobile device activity that will distract students or the instructor.
Withdrawals: If you decide to drop, it is your responsibility to submit an official drop to the Admissions Office. Do not assume that you will be dropped automatically.
Pro-activity and Self-Starting
Rule #1: If you want to learn programming you MUST do the reading and you MUST do the exercises and you MUST take advantage of whatever resources and sources are available in order for you to deeply understand it. Programming does not come magically or trickle into your head by osmosis. You cannot skate. It takes work. You must dedicate hours each day reading about code, writing code, researching code, puzzling out code, working the code again and again, and wrestling it into place. Eventually you might even find yourself dreaming about code, and then waking up in the morning with a “solution” to the problem you went to bed with. There is no other way to learn it.
Rule #2: Search-it up! Answers from Stackoverflow.com are usually great if you read the whole page. Just don't use other students' work. That is plagiarism and it short-circuits your own learning (I've probably changed the assignment's requirements too).
Rule #3: Be resourceful, energetic, proactive, flexible, a self-starter, self-reliant, self-disciplined, and show drive and initiative! Show a friend (they don't even need to know how to program) how your program works and often you will realize the cause of your problem before you even finish your explanation! If there is a tester project provided, make sure your code passes all unit tests.
Rule #4: Don’t get frustrated. Take breaks. Walk away from your code for an hour or two, and then come back to it refreshed and rejuvenated. It works!
Rule #5: Search for it again! And again! And again! Maybe you are in a Filter Bubble, so try another search service like StartPage.com or DuckDuckGo!
Undocumented Students
The Foothill-De Anza Community College District Board of Trustees unanimously adopted this Resolution in Support of Undocumented Students and this Resolution in Support of DACA, the Deferred Action for Childhood Arrivals program. Resources for the undocumented can be found at:
- https://foothill.edu/dreamers/
- ready-california.org
- California Community Colleges Resources for Undocumented Students
- Immigrant Legal Resource Center
Tentative Course Schedule:
The complete schedule is found in the course Modules page. What follows is a summary of those items that have a due date. I reserve the right to change anything in the schedule.
Course Summary:
| Date | Details | Due |
|---|---|---|