Course Syllabus

CS 111C: Data Structures and Algorithms- Java

CRN 71527 Section 932

Fall 2022

The Syllabus contains 11 sections. There is a lot of information, but it is important for you to read each section. To read each section, click the heading for that section to expand and read.  In the future, click on the Syllabus Navigation Link  syllabus navigation button on the top right to jump between sections or revisit relevant sections.

  Course Communication

Instructor Contact Information: Jessica Masters

I love hearing from students! There is nothing too trivial or "silly" to email me about. I will never feel "bugged" by too many emails from you. 

  • Email: jlmasters@ccsf.edu
    • I prefer to receive messages directly through email, rather than the Canvas Inbox.
    • Please include "CS 111C, Section 932" in email messages so I know what class you are referring to.
    • I will respond to your messages within 48 hours (although usually much sooner!) Monday-Friday, excluding holidays, between the hours of 8:00am - 4:00pm.
  • Office Hours: Zoom on Mondays from 9:00-10:00am and Thursdays from 10:00-11:00am. 

Instructor Announcements 

It is critical that you read every announcement. Announcements contain critical information such as upcoming deadlines, common mistakes or feedback, or summaries of current topics. 

Announcements will appear at the top of the course Home page, in the Announcements area, and/or they will be sent to you directly through your preferred method of notification. from Canvas .

Be sure you are reading the Announcements.

Discussion Boards

The discussion boards are our only method of group communication for the class. Posting questions, posting answers, and reading other students' posts is key to being successful in the course. Review the Discussion Board FAQ page for details about how to use the discussion boards.

If you have a question about something, it's very likely that someone else has the same question. Posting the question allows everyone to benefit from the question, answer, and discussion. The discussion boards take the place of an in-class discussion, where you would hear (and perhaps respond to) other students' questions and answers.

There is no question too small or silly to be asked! We are all here to learn and using the discussion boards supports everyone's learning.

Each module has a discussion board dedicated for discussion about that module. There is also a Q&A about the Course discussion board for general course questions and a Student Lounge discussion board for student-only communication.

I will participate in the discussion boards to answer student questions. I respond to discussion board posts 48 hours (although usually much sooner!) Monday-Friday, excluding holidays.

Finally, online discussion boards are widely used in the "real world" (e.g., stack overflow). Using discussion boards in our class is good practice for using them out in the world!

Pronto

I will not use Pronto to communicate. Students are welcome to use it to communicate with each other. I will not read or respond to Pronto posts.

  Expectations

Time Commitment

This is a somewhat compressed course (16 weeks instead of 17.5). Students are expected to spend approximately 15 hours per week completing course activities. Make sure you can spend that amount of time on course activities.

This is an intense course and I know that everyone also has a full life outside of class. That's why it really important to sign into the course multiple times each week to keep up with the material. You will be most successful if you dedicate time throughout the week to stay on track. It's best to do a little each day if possible. Don't leave assignments until the last minute.

If you have any questions about ways to improve your study habits or what it takes to be a successful college student, check out the resources available at the Learning Assistance Center, which can help develop skills that will benefit you in college and beyond.

Student Expectations 

Here is what I expect of students each week:

  • Watch the instructor-provided lecture videos while following along with the provided lecture notes and source code.
  • Read the textbook.
  • Ask for help when you need it.
  • Complete the practice questions and post one answer to the graded discussion board.
    • The more you code, the more successful you will be!
    • Practice, practice, practice!
  • Complete the assigned activities and submit them on time.
  • Participate in the discussion boards.
    • Post questions that you have.
    • Answer other students' questions when you can.
    • Read the questions, answers, and discussions posted by other students.
  • Do your own work and your best work. 
  • One more time because it's so important: Practice, practice, practice! 

Instructor Expectations 

Here is what you can expect of your instructor:

  • I will treat you and your ideas with respect. 
  • I will respect your diverse experiences and identities.
  • I will respond to your email or discussion board post within 48 hours during the week, unless I inform you otherwise.
  • I strive to review grade homework assignments within a week of the deadline.
  • I will post grades and feedback in the Canvas Gradebook.
  • I will give comments and feedback on all projects and many homework coding questions.
  • I will provide feedback on coding questions or projects whenever points are deducted.
  • I will work hard to make this a great class. 

  Standards of Conduct

Academic Honesty in Computer Science

Begin by watching my video discussing Academic Honesty in Computer Science and reviewing the slides from the video.

There has unfortunately been an increase in incidents of students posting assignments online and getting (or buying) answers from strangers instead of asking for help. I understand that students who cheat in this way are often frustrated and feel desperate to get help on something they don't understand or fell behind on, often with the hope that they will catch up in the future. The problem is that this approach never works out well: the more they cheat the less likely they are to come to their instructor for help because they don't want to admit that they've been cheating. It's a bad cycle with no good ending.

If you find yourself thinking "These problems make no sense!" or "I have no idea where to start" or "Nothing in the reading or videos showed us how to do this!" then you need to post to the discussion board, talk to me, the class TA, the CCSF Tutor Squad, or maybe all of us! We are all here for you and we want you to succeed. If you feel desperate at the last minute when an assignment is due- please reach out to me instead of cheating. I would much rather get an honest email at 6:57pm describing your situation than deal with the ramifications of a copied answer.

What actually is plagiarism/cheating? 

Plagiarism means representing someone else's work as your own. Plagiarism means using the ideas, text, or programming code of someone else without appropriate acknowledgement. Plagiarism also consists of allowing someone else to write or alter your own work and submit it as your work.

Here are some examples of plagiarism. All of these are not allowed and will result in a 0 on the assignment or exam and potential disciplinary action:

  • Copying and pasting code from a website and submitting that code as your own
  • Submitting answers or code written by another student (from this semester or a previous semester)
  • Submitting answers from an online source
  • Posting an online request asking someone else to write an answer or code
  • Posting a homework question, project, or exam question to an online study site and asking someone to complete it
  • Communicating with other students or any other people other than the instructors during this exam; this includes e-mail, text, instant messaging, or any form of communication

How can I act with integrity?

There are lots of places to go for help and ways to use that help in an ethical manner that isn't considered cheating. Here are some basic rules to follow to make sure you are acting ethically:

  • Write your own code.
    • This is the most important thing- it all boils down to this! Write your own code.
  • It's okay to get ideas or help from a website or person if you use those ideas to write the code yourself.
    • I recommend reviewing the help and then putting the help away to write the answer.
    • Close the browser, turn off the phone- whatever- just remove the resource from sight and then write the code yourself.
    • This will ensure you are not plagiarizing and that you actually understand the concept.
  • Ask real-life friends or colleagues for help.
    • This includes me, the course TA, the CS Tutor Squad, and the other students in our class.
    • Avoid getting help from online "study sites"- these sites usually just provide answers for money. They are rarely there to help you learn and they often encourage cheating behavior that results in bad consequences for you.
  • Make sure you can explain any code you submit.
    • This ensures that you've really learned it!
  • Don't post homework questions, projects, or exams to online study sites.

If you are ever unsure about how to act with integrity or appropriately use online help sources or code that you see elsewhere, post to the discussion board to ask!

Official CCSF Policies

Students who register in CCSF classes are required to abide by the CCSF Student Code of Conduct. Violation of the code is basis for referral to the Student Conduct Coordinator or dismissal from class or from the College. See the Office of Student Affairs.

Collaborating on or copying of tests, homework, or projects in whole or in part will be considered an act of academic dishonesty and result in a grade of 0 for that test or assignment. I encourage students to share information and ideas, but not their work. See these CCSF-provided links on Plagiarism:

Encourage Academic Integrity and Prevent Plagiarism

Citing Information Sources

  Course Description

The analysis and design of computer algorithms and their underlying data structures. Analysis of the timing and efficiency of algorithms. Study of lists, stacks, queues, trees, backtracking, searching, sorting and recursion. Introduction to graphs, hash tables, heaps, priority queues and direct access files. Further study of abstract data types and object-oriented programming.

Course Outline of Record

Prerequisites

You are expected to know the basics of programming in Java, including object-oriented principles, class design, and arrays.

Prerequisite: CS111B (grade of C or better) or equivalent from another institution or passing grade on the prerequisite qualifying exam.

Student Learning Outcomes

  1. Analyze the results of applying common algorithms to data structures.
  2. Evaluate data structures and algorithms for given problems considering appropriateness and efficiency.
  3. Design and implement algorithms and data structures.
  4. Design and implement recursive solutions.

Class Meetings

This is a fully online, asynchronous course. All course activities will occur online. There are no set meeting times.

Course Web Site

Students will use the Canvas Learning Management system for all course activities, including accessing instructional materials, submitting assignments, and viewing grades. Your instructor is here to help with the course material and can sometimes help with some Canvas issues. But, if you need help uploading an assignment or with the mechanics of Canvas, Canvas help is the number to call.

For 24/7 help with Canvas, use the Canvas chat.

For technical help with your RAM ID or logging in, visit the CCSF Help Desk.

  Course Textbook and Technology

Textbook

  • Data Structures and Abstractions with Java

    5th Edition

    Author: Frank M. Carrano and Timothy M. Henry

    Publisher: Pearson

    ISBN-13: 978-0134831695

    Copyright: 2018

  • The 4th and 3rd editions are also acceptable. The 2nd edition or custom editions are not acceptable.
  • There is a 4th edition book on reserve at the library
  • A physical book, digital copy, rental copy, or any other format of book is acceptable.
  • The digital access code is not required.

Review the Bookloan Program, provided by the Associated Students in partnership with CCSF Library. Eligible students can borrow up to four textbooks for the whole semester, completely free of charge. 

You can download the source code from the 5th edition textbook here.

Canvas

Students will use the Canvas Learning Management system for all course activities. For 24/7 help with Canvas, use the Canvas chat. For help with your RAM ID or with logging into Canvas, visit the CCSF Help Desk.

Required Software 

Additional Computer/Internet Resources 

Here are some additional resources that might be useful:

  Course Logistics

Important Dates

The CCSF instructional calendar is available online. Below are some important dates for our class. You can also review this alternative course schedule for dates specific to short-term classes (like ours).

  • Our Class begins: Monday, August 29, 2022
  • Last day to drop for refund: September 8
  • Last day to enroll: September 16
  • Last day to drop without a W: September 16
  • Last day to drop with a W: November 21
  • Class ends: Tuesday, December 20
  • Grades available on myRAM: Tuesday, January 10, 2023

Holidays in Fall 2022:

  • Monday, September 5: Labor Day
  • Friday, November 11: Veteran's Day
  • November 24-27 (Thursday-Sunday): Thanksgiving Holiday Recess

Dropping the Class

If you decide to discontinue this course, it is your responsibility to officially drop it to avoid getting no refund (after 10% of course length), a W symbol (after 20%), or a grade (after 60%).

Students who do not actively participate in the course may be dropped by the instructor. You must sign into the course every week and actively participate by participating in discussions and submitting assignments. Students who have not engaged in academically related activity for a week may be dropped from the class. Note that signing in and just viewing the course materials without doing anything else is NOT active engagement.

It is strongly advised that if you need to miss more than one homework deadline that you contact me to avoid being dropped from the class.

Students who do not participate in the academically related activity and other requirements during the first week of class (including posting to the Check-In Discussion, submitting Syllabus and Course Policies Quiz, and submitting Homework M1: Review) will be considered “no shows” and will be dropped from the class.

Pass‐NoPass (P/NP)

This class must be taken for a letter grade; it cannot be taken as Pass-NoPass.

  Grading

Visit the “Grades” page in Canvas to keep track of your grades. You can also review the How do I view my grades? Canvas FAQ page. I continually grade homework and projects throughout the week and post grades and comments. 

Methods of Evaluation

Your grade is based on homework, projects, exams, and participation. Assignments are evaluated based syntax, logic, and style. Solutions should be syntactically correct (i.e., compile and use correct Java syntax), semantically correct (i.e., accomplish the task), and follow Java coding conventions.

The course work is weighted as follows to determine your final grade:

homework is worth 30%; projects are worth 30%; exams are worth 30%; participation is worth 10%

Information about Graded Assignments

What?

How Many?

Other Info?

Homework: weekly assignments with multiple-choice, short-answer, and coding questions 13 @ 100 points each

The lowest homework score is dropped.

Many homework contain extra credit questions.

Homework can be submitted late.

Projects: full-program coding projects 3 @ 100 points each

You can earn up to 30 points extra credit for working in a group.

Projects can be submitted late.

Participation: graded discussion posts 13 @ 10 points each

The lowest three scores are dropped. So you can miss up to three posts and still get full credit.

Graded discussion posts cannot be submitted late.

Exams 2 @ 100 points each

Exams are online and taken in a single sitting during the specified days.

You must complete both exams to receive a passing grade in the class.

 

Letter Grades

Grades are assigned as follows: 

  • A: 90% - 100%
  • B: 80% - 89.99%
  • C: 70%: - 79.99%
  • D: 60% - 69.99%
  • F or FW: < 60%

An “F” grade indicates that a student attended, participated and completed the course but failed to master the course curriculum.

An “FW” grade indicates the student stopped attending a course after the “last day to withdraw” deadline and subsequently did not submit any work or participate in any exams. Please check with your counselor and financial aid advisor for possible implications of the FW grade on residency and financial aid status.

Submitting Assignments, Late Policy, and Dropped Grades

Keeping up with coursework can be a challenge. We all have busy lives! But it's not possible to learn the material all at the last minute. Please make sure to have a plan for completing course work and submitting on time.

Assignments are due at 7:00pm. Note that I will most likely not be online at that time. Be sure to start work early and ask questions early so I can answer them in time. 

If you have concerns about completing an assignment. I want you to succeed! I know that life happens, and I will work with you whenever possible. I would much rather discuss a problem ahead of time rather than have you miss an entire assignment.

Homework is accepted late anytime after the due date with no penalty. I strongly suggest, however, that you submit by the due date so that you can keep up with the pace of the class.

I drop the lowest homework grade. I do not drop any project grades.

You are allowed to miss three of the Graded Discussions, but these cannot be submitted late. After the end of the module, you can no longer post to the graded discussion forums. Because I don't allow late submissions, I do allow you to miss two of them and still get all of the points for this category.

Homework

Most modules will have one homework assignment. Homework involves coding questions, multiple-choice questions, and short-answer questions.

Homework is listed as "quizzes" on Canvas. But it is not a quiz. You can work on the homework as much as you want up until the deadline. You do not have to complete the homework in one sitting. In fact, you should not complete the homework all at once. You should work on it throughout the week. However, note that you can only click "Submit" one time, so be sure you are completely finished when you submit.

Most homeworks will include extra credit questions. These are optional and can never hurt your grade. 

You can use all available resources on homework assignments. You can work with other students. Each student must submit their own homework assignment.

Projects

There are three projects. Projects are more extensive Java programs. You will have 3-4 weeks to complete each project.

Projects must compile to receive credit. Projects that do not compile will receive a score of 0.

You are allowed to work in a group on all projects if you choose. You will earn 10 points extra credit in the Projects category for each project you submit with a group.

Many projects also contain extra credit. This portion of the project is optional and can never hurt your grade.

Participation

Participation is based on posts made to each module's graded practice discussion board. You are required to post one answer to this discussion board in each module. Note that posts in other discussion boards do not count towards your participation score.

Your posted answer is worth 10 points. Answers are not graded and you are not being scored based on the correctness of your answer, only on your participation.

There are 13 graded practice boards. You can only earn a max of 100 participation points and this part of the grade cannot go over 100%. This allows you to miss up to three practice posts and still get 100% for your participation score.

The purpose of the graded practice discussion boards is to get practice with and feedback on topics before you submit your homework or project. Participation posts are due the day before the homework, usually on Sunday at 7pm. Posts can be made late up until the homework due date but then these boards are closed.

I review the graded discussion boards every day Monday - Friday. I do not leave feedback on correct posts, I only score them with the 10 points. It is best to post early in the week if possible to get feedback on topics early.

Exams

There is an online midterm and an online final exam. The exams are open-note, open-book, open-Internet. You must take the exam in a single sitting within the days specified. It is your responsibility to take the online exams by the due date.

You must complete exams on your own and cannot communicate with anyone other than the instructor during the exam.

You must complete both exams to receive a passing grade in the class.

Calculating Your Course Grade:

  • Add up all of your homework points (including extra credit) and divide by the total number of points available so far. 
    • Note that this might be over 100% because of extra credit.
    • Multiply this number by 0.30. This is your homework score (homework is worth 30% of your grade).
  • Add up all of your project points (including extra credit and groupwork points) and divide by the total number of project points available so far.
    • Note that this might be over 100% because of extra credit.
    • Multiply this number by 0.30. This is your project score (projects are worth 30% of your grade).
  • Add up your midterm and final exam score and divide by the total number of points available.
    • Multiply by 0.30. This is your exam score. 
    • Note that if you want to get a sense of your grade before the midterm, you can put in an estimated grade for the midterm, such as 80 if you think you will score an 80% on the exam.
  • Add up all of your participation points and divide by the total number of participation points available so far (which is 10 points * the number of weekly practice/discussion forums).
    • Multiply this number by 0.10. This is your participation score.
    • The participation score cannot be over 100%. If your score is over 100%, use 100%.
  • Add up the four scores and this is your course grade. 

  Course Schedule

Our course weeks run from Tuesday morning through Monday night. The dates of each module are listed in the title of each module.

Carefully check the due date of each assignment to make sure you know when the assignment is due. The "Calendar" icon on the left can also help with this

The schedule is subject to change.

Course Schedule
Week/ Module Dates Topic
1 Monday, August 29 - Tuesday, September 6 Review
2 Wednesday, September 7 - Monday, September 12 Generics
3 Tuesday, September 13 - Monday, September 19 Interfaces
4 Tuesday, September 20 - Monday, September 26 Array-Based Implementations
5 Tuesday, September 27 - Monday, October 3 Linked Node Implementations
6 Tuesday, October 4 - Monday, October 10 Timing and Efficiency
7 Tuesday, October 11 - Monday, October 17 Recursion
8 Tuesday, October 18 - Monday, October 24 Midterm Exam
9 Tuesday, October 25 - Monday, October 31 Sorting and Searching
10 Tuesday, November 1 - Monday, November 7 Stacks
11 Tuesday, November 8 - Monday, November 14 Queues
12

Tuesday, November 15 - Monday, November 28

(note this is two weeks)

Trees
13

Tuesday, November 29 - Monday, December 5

Graphs
14 Tuesday, December 6 - Monday, December 12 Hashing
15 Tuesday, December 13 - Monday, December 19 Final Exam

  CS Department Equity, Diversity, and Inclusion Statement

The CCSF CS Department is committed to promoting equity, diversity, and inclusion in the field of computer science. We strive to make computer science accessible and exciting to all, particularly those who historically have been and continue to be excluded from or face discrimination in the field based on their race, ethnicity, national origin, sex, gender identity, sexual orientation, age, disability, or other dimension of their identity.

We believe that an inclusive department with perspectives from diverse backgrounds benefits students, teachers, and the broader community and helps promote innovation and the more equitable application of technology in society. 

Promoting equity, diversity, and inclusion is a process of continual growth and learning for us. We welcome your ideas and questions. If you have a suggestion for how we can better support you and/or your classmates, or if you have a question about our efforts in this area, please reach out to any CS instructor or to the Department Chair. We will make sure your voice is heard. 

For more information and resources outside of our department, please visit CCSF’s Office of Student Equity.

Additional Notes from Jessica

I would like to create a learning environment that supports a diversity of thoughts, perspectives, and experiences, and honors your identities (including race, gender, class, sexuality, religion, ability, etc.) To help accomplish this:

  • If you have a name and/or set of pronouns that differ from those that appear in your official CCSF records, please let me know so I can use them.
  • If you feel like your performance in the class is being impacted by your experiences outside of class, please don’t hesitate to come and talk with me. I want to be a resource for you. If you prefer to speak with someone outside of the course, our chair Jonathan Potter is an excellent resource.
  • I (like many people) am still in the process of learning about diverse perspectives and identities. If something was said in class (by anyone) that made you feel uncomfortable, please talk to me about it. 
  • As a participant in course discussions, you should also strive to honor the diversity of your classmates. 

  Anti-Discrimination Policy

The San Francisco Community College District is committed to the principles of equal opportunity, and the prevention of discrimination and harassment in any program or activity of the District on the basis of race, color, ancestry, national origin, ethnic group identification, religion, age, gender, gender identity, marital status, domestic partner status, sexual orientation, disability or AIDS/HIV status, medical conditions, or status as Vietnam-era veteran, or on the basis of these perceived characteristics, or based on association with a person or group with one or more of these actual or perceived characteristics.

If you believe you have been subject to discrimination, please contact Mildred Otis, Title 5/EEO/ADA/Title IX Compliance Officer, at motis@ccsf.edu.

  Academic Accommodations for Students with Disabilities

Students with disabilities who need accommodations are encouraged to contact their instructor.

Disabled Students Programs and Services (DSPS) is available to facilitate the reasonable accommodation process. The DSPS office is located in the Rosenberg Library, Room 323 and can be reached at (415) 452-5481.