Cs2a Fall 2024 Syllabus
Cs2a Fall 2024 Syllabus
CS2A
My name is &. I'll be your teacher in this class.
Students will be required to do their homework assignments at the Genius Bootcamp. Those who are enrolled
in this class are auto-enrolled in this bootcamp for free. I have arranged to get notifications and access to all of
your code submissions, and for your scores to be transferred to Canvas on their due dates. This bootcamp is an
incredibly fun and supportive community experience to learn CS in. However, you should not expect answers or
hand-holding by anyone here either (as these are discouraged).
In many classes that I've seen, and in ones I have taught in the past, students typically compete with each other.
There is a tremendous amount of secrecy around the material each student knows, and requests for help are
made and received in private. In the end, I found that many students didn't actually learn what the course
promised to teach them. However, they had an easy time in the class because solutions were easy to get, easy to
get accepted, and the work wasn't demanding.
In contrast, in this class, you will likely find yourself struggling. You will be frustrated. You will want to give up.
But thanks to incredible support from our unique CS community that YOU get to be part of, you will feel happy
that you didn't. Read the reflections and advice for future students from those who already did it.
You should budget enough time for this class in your schedule. If you're enrolled in 15 units, for example, and
you're doing one other time-consuming class, say in Math, then you should ideally pick your third class from an
area you are not intending to major in (e.g. Ceramics, Acting, etc.). This will give you the time to focus on the
STEM subjects aligning with your major, while providing a great and relaxing non-STEM class experience.
Foothill counselors and academic advisers are trained in helping you with this.
You should ideally start questing and participating in the bootcamp as early as possible after you get this
syllabus in your hands. More details on this later in the syllabus.
3/15
● CS2A Homework gets you through the BLUE level of the bootcamp
(Beginner)
● CS2B Homework gets you through the GREEN level of the
bootcamp (Intermediate)
● Belief in yourself, courage, patience, and perseverance make you a
RED DAWG (Pro)
Administrative stuff
CS 2A is an introduction to CS and object-oriented programming using the C++ language. Absolute beginners
or students already familiar with other programming languages will learn how to write C++ programs that cover
a wide range of applications..
1. A successful student will be able to write and debug C++ programs which make use of the fundamental
control structures and method-building techniques common to all programming languages. Specifically,
the student will use data types, input, output, iterative, conditional, and functional components of the
language in his or her programs.
2. A successful student will be able to use object-oriented programming techniques to design and
implement a clear, well-structured C++ program. Specifically, the student will use and design classes
and objects in his or her programs.
Start your adventure in Foothill's class by completing the following tasks (the first two are required). The
Canvas site for this quarter should be open if you're reading this.
1. posting an introductory note about yourself in Canvas (You can simply reply to my own introductory
post if you prefer)
2. scoring at least 90% on the syllabus quiz (in Canvas). This doesn’t need knowledge of CS or c++.
3. introducing yourself in the subreddit in r/cs2a (under the Foothill flair)
These must be completed before the end of the first Friday (Wednesday for summer) of the quarter to
prevent being dropped.
Course Workbook
Your homework problems are designed to cover a well-spaced selection of topics in the syllabus (and in your
Canvas Action Plans). These are the first 9 quests of the official Genius workbook - The Enquestopedia.1
Your weekly Action Plan will list more topics than are covered in the quests. You should learn and discuss such
topics, asking for clarification as needed. Exams and quizzes are largely based on these topics.
1
The Enquestopedia is just a high-level reference of what is to come. You will get Foothill-tailored versions of
the quest specifications (slightly different from the bootcamp workbook) as and when you complete each quest.
5/15
Assessment
If you're doing this course for kicks, or other fun reasons, you can skip this section.
If this course is offered for a grade, and you are taking it for a grade, then, your final grade will be based on fun
programming quests2 in the bootcamp (homework), exams, quality of weekly reflections, and conceptual
understanding/ability to help other programmers (forum).
Worksheet
In the worksheet below, activities marked with an asterisk (*) are required activities. This means that if that
activity is not completed then nothing below it will count towards your grade. Pupping a quest means
progressing until you get the password to move on. Dawg stands for detailed attentive work given, which is
proxied by collecting the stated number of trophies for that color).
Syllabus Quiz* 20 1%
TOTAL 100%
For an A+ A A- B+ B B- C+ C D F
2
More on quests in Appendix A.
6/15
This class fosters a communal learning atmosphere where you get significant points by teaching and helping your
classmates succeed. Contributions that are focused more on personal advancement without regard to the rest of
the class don't get as much weight. Here's your chance to put on your teacher's hat and practice trying to explain
difficult concepts to others (essential skill for those aspiring to become leaders).
It is super important that you set aside sufficient time to experiment, discuss, and assist other students with
your insights and hints every week. You can get a maximum of 10 points per week, with a cap of 100 points over
the 12 week quarter. How much you get each week depends on the quality of your participation. To get close to
the full points, you must pretty much participate wholesomely every single day. This means that you need to
discuss in the forum at least one issue, insight, or technical fact related to that week's material or the quests
EVERY DAY. The following kinds of contributions (posts or comments) don't count:
1. Those that don't demonstrate your own thinking or the work you put into trying to solve your issue
first.
2. Those that lack a follow up post/comment that describes how you fixed your issue, thanking those who
helped.
3. Those that show up all within a day or two instead of being spread out over the whole week.
If you make a post that begins a rich discussion with many classmates, you can assume it will score high for the
week. Reflective posts summarizing your struggles, what you did to overcome them and what you learned in the
process are also worth a lot even if they don't garner lots of comments.
If you find you didn't get as many participation points as you hoped for a week, you can reach out to me with a
list of links to the posts/comments in question and I will be glad to re-review them, or suggest how you can
improve the score for the following week. You can also attend the weekly virtual catchup meetings and
participate by sharing your insights/help to make up somewhat.
Exams
Exams are objective style and will be administered via Canvas. They will be open from 6pm to 9pm on the
scheduled dates. You can start any time during this window, but once you begin, the current version of Canvas
does not allow you to pause your exam and come back to it. The midterm is 1h long, and the final is 2h long. The
timer cannot be stopped once you start it, until you hit finish.
To score high on this, your report should be prepared as if it is a portfolio for a potential hiring manager who may
look you up and review your reddit posts to gauge your level of expertise and ability/willingness to learn new
things. You can use this as an opportunity to build a compelling portfolio of technical musings and discussions
3
Use the subreddit flair Reflections for this post.
7/15
you might want to present to someone. This is when you'll be glad for your daily forum participation because
you can simply use them as the raw material from which you can create this summary final reflection.
It should contain links to selected posts and comments (with short descriptions) spanning the entire quarter, not
just all made in a few weeks. I also recommend you use your post to leave comments and advice for future
students.
A good final reflection has a selection of links and comments for the following types of content. See examples on
our sub.
Avoid posting a list or table of links, or listing trivial posts, comments and answers. Ideally, all your selected links
had something valuable to ask or say and you have something to say about them now. Also use this post as an
opportunity to express your final thanks to all your classmates who stood by you during the quarter and pulled
you out when you were stuck.
This NYT link, shared with me during a previous quarter, gives lots of tips on how to prepare good reflections.
You can use it as a template or a workbook to create a new one.
1. What do you know (in CS/C++) this week that you didn't know well before?
2. Are you stuck with your homework? Frustrated? Too shy to ask for help?
3. Did you make exhilarating breakthroughs?
4. Did you share any useful or interesting information on our forum?
5. Did you help anyone?
6. Are there classmates you'd like to thank for helping you?
You can go to the respective subreddit (r/cs2a, r/cs2b or r/cs2c) and simply search for posts with the word
"participation" or "report" in the title. You are bound to find many fine examples.
While these are optional, attending and participating in these meetings with your camera on is a way in which
you can make up for some of the shortfall in your weekly forum discussions.
If you feel that you may not get full participation points for a week, make sure to attend the meeting and
contribute to get a few points more. Note that this meeting IS NOT A SUBSTITUTE for your participation in the
discussion forum.
8/15
So you can quest at your own pace. However, note that there is a late fee of 5 trophies for each quest that is
submitted past its freeze date. These points will be subtracted from the final total trophy count before capping.4
Here is a suggested study/work plan, which aligns closely with the Weekly Plans you will find in your Canvas
Modules.
Every week, give yourself ONE or more topics to study and one or more programming quests to complete (2 in
summer). Anything not clear should be clarified via discussion in the forum, ideally during the appropriate week
(See table above). Make sure you have adequate time to code, experiment, revise and recode EVERY week. This
takes a LOT longer than many students estimate. Also see: The bell rings at 11:59.
Finally, note that you cannot leave a hole in your questing trail. Your trophies for Quest-n only count after you
have at least pupped all quests < n.
4
Important implication: Note that there is NO WAY to dawg the quests even if you have a single late submission.
Real dawgs ain't never late.
9/15
Extensions
Extensions don't make sense because the quests are self-paced. You just have to complete each by their "freeze"
date to get full credit. After their freeze dates, you should still complete them, but you will have a late penalty of
5 trophies for that quest. There's a LOT of time to complete these quests even if you have to take some breaks.
So, there is no need to ask for extensions.
Communication
Please use our sub for any question or comment that relates to the quests or CS concepts. You can also email
me.
Try to meet with each other after class (even if virtually), set up private study and programming groups and work
on independent (non assignment) programming challenges outside of class. I'll give you a few interesting
challenges from time to time. Some of these may earn you extra credit.
You can reach me via messaging in Canvas, Reddit or by email. While on campus, my room number is 0x113d (in
hex). In week 1 of CS2A, you learn how to decode that into decimal.
I opened the door. "Hey sorry. My office hours are at 10am. See the sign?" I pointed at the print out I had stuck to my door. It
clearly said 10AM - 11AM in BIG BOLD BLACK letters.
"Yeah" she said. "I read it. But I'm a binary janitor. So I waited up until now to come here."
"That's cool. You definitely deserve an answer" I said. "What's your question?"
"Would you like me to come back later to empty your trash can?"
This quarter, I've decided to do away with this confusion. I have open office hours ANYTIME (virtual). I am very
flexible in being able to adjust to your availability. But you have to pre-arrange it with me via email first.
I will likely be able to point you in the right direction for further experimentation. But I will not look at your
questing code directly, nor debug it for you. Nor can you ask anyone else to do it (honor code).
10/15
If you are registered with DRC and have a disability accommodation letter of accommodations set by a DRC
counselor for this quarter, please use Clockwork to send your accommodation letter to your instructor and
contact your instructor early in the quarter to review how the accommodations will be applied in the course.
Students who need accommodated test proctoring must contact the DRC immediately if they cannot find or
utilize your MyPortal Clockwork Portal. DRC strives to provide accommodations in a reasonable and timely
manner. Some accommodations may take additional time to arrange. We encourage you to work with DRC and
your faculty as early in the quarter as possible so that we may ensure that your learning experience is accessible
and successful.
To obtain disability-related accommodations, students must contact the Disability Resource Center (DRC) as
early as possible in the quarter. To contact DRC, you may:
Visit DRC in Building 5400, Student Resource Center (physical visits suspended during college closure).
Important Dates
For a list of important dates for the winter quarter, see the official college page here.
11/15
Appendix A - Questing
The Genius Bootcamp
The Genius Bootcamp is a supportive and fun community of CS and C++ learners from all over the world. You
are auto-enrolled in this bootcamp and you can proceed to complete it for free after you finish CS2A. In fact, you
can even get credit for the BLUE quests if you decide to enroll officially in my CS2B next quarter.
At this bootcamp, you are bound to have company from Genius questers who are new to the language like you.
You may find that your posts in the subreddit elicit help or responses from bootcampers not in your class.
Please introduce yourself in the Foothill Flair of the blue subreddit. After that, your interactions will mainly take
place in our blue subreddit, r/cs2a.
These quests are meant to be solved in sequence. Each quest will give you a certain number of trophies. You can
check your total trophy count at any time by visiting your personal scoreboard at the /q site (It will be wiped on
the 1st of Jan, Apr, Jul, and Oct). It will show you all your trophies, but only the BLUE ones count for this course. Your
secret handle is your Student ID.
The quests are set up such that the password to each quest is given out upon scoring a certain number of
trophies in the preceding quest. However, I found that a few students were getting stuck in the lower numbered
quests pounding away at them to eke out every remaining trophy before moving on, even though they had
already earned the password. This is a bad strategy. Resist your temptation to hack more, and keep moving
when you get a password. Pupping5 a quest is sufficient to move to the next quest. You can always come back to
polish your previous quests when you have free time before the final week. You get about one week on average
before each quest freezes (only 3 days in Summer.) After this, the trophy count for a quest will be docked by 5
trophies (minimum = 0).
In order for rewards from a quest to count towards your total, you must have completed all previous quests. If
you leave a hole in your trail of completed quests, then your total reward earnings is the sum of all rewards you
earned before the first incomplete quest.
5
Progress Until Password
12/15
Dawging it means you review the code and the spec in detail and try to get all available trophies. I don't think
anyone knows how many trophies there are per quest, but it's usually easy to tell if you've got everything
obvious. If you Dawg all the quests you should get at least 190 trophies (the cap).
Bummer… Yes? If I were you I would try my best to avoid that situation by staying on top of things and taking this
class seriously.
Quests need to be pupped6 in sequence before their freeze dates. However, once pupped in time, they can be
dawged ANY TIME before the final week Friday.
Dawg points are All OR NOTHING. That means, "189 of 190 BLUE trophies" don't count until one more trophy
is won. No exceptions.
Of course, I can't police this. But your enrollment in this class signifies acceptance of this condition (in addition
to being bound by Foothill's Academic Integrity Policy). You cannot send your code to me, a tutor, or someone
else and ask them what the issue is. What you can do is:
Sometimes it is also ok to post some code on our subreddit. Mostly, exercise good judgment regarding what can
be shared. You want a fun and fulfilling learning experience. The best way to get it is to keep it fun and fulfilling
for everyone. You wouldn't give away a movie's ending to a friend who's going to watch it. Why give them the
solution to a problem when they can feel good finding it themselves?
6
pup = Progress Until Password to next quest. dawg = Detailed Attentive Work Given (usually max trophies) -
More on these later.
13/15
7
Making sure to post from your reddit handle matching the spec, you can increase the connection strength
between your submissions and your post.
8
To avoid this, make sure to use your Student ID in all your submissions, not just your polished final one.
Confirm that your score shows up correctly on the /q site.
14/15
Don't say anything in the forums that you'll end up regretting later in your life. OTOH do try to let your natural
genuine curiosity shine through for others to seek out in a sea of wannabe software engineers. Maintain your
profile on our subs as you would if you were a professional and it will free up a lot of your time.
I will try to remove posts that I deem (in my subjective opinion) to be a liability to your future self. But you can't
rely on it. Best to be helpful, courteous, informative and only post useful and interesting observations without
overtly giving the answers away. They usually have more lasting value.
ANY user anywhere in the world can quest and post/discuss in our subreddits. So you may see posts and replies
by users with anonymous names like coding_lion, bat_girl and such. All posts are subject to the same rules like
Johnny be good, but only the ones with avatar names matching the spec in this syllabus will get participation
credit.
You are expected to use the subreddit to communicate with your current questers, and to demonstrate both
your conceptual understanding and willingness to help others technically.
After you successfully complete a quest on your own (with possible contemporary help), you can refer to all past
posts for that quest before you post your reflection.
IMPORTANT: Even though our subreddits contain content created by past students and other bootcampers,
you must NOT review any past content on a quest - honor code. You can view and comment as much as you
want on any content for a particular flair after you have dawged that quest. Don't publish tip sheets or cheat
sheets. Do not share actual quest code.
15/15
Appendix C - Resources
Text recommendation
Some students have benefited from using the book Absolute C++ by Walter Savitch. Note that it is heavy. There
is an electronic version someone shared on our sub a while ago.
Then there is, of course, the Internet. You will need to search various sites like Stack Overflow, reddit, YouTube,
etc, for the keywords of the week. You can use your weekly reflection to share links you found useful (along with
a short summary of what you found useful in them).
I'm also happy to provide guest lectures for particular topics. Simply get a group of similarly curious folk
together and arrange with me to zoom at a convenient time.
We will cover most of the topics in the syllabus in our lectures. Make sure to attend them and offer to live-code
when asked.
Bottom line
Computer science is a hard science, not a soft science. It requires conscious and deliberate practice. A
significant investment of your time and effort will be required in this class. To succeed in CS2A, you must expect
to code at least 2 hours EACH and EVERY single day for the next 12 weeks.
Make sure your schedule allows it before you start. If you apply yourself sincerely, you will learn a REALLY
USEFUL skill for a happy life and FEEL the difference at the end of this quarter. And besides, you'll be well on
your way to completing the Genius Bootcamp.
Happy Hacking!
&