top of page
Search

Computational Thinking and Computer Science (JCS01) Course Tips

  • Mar 13, 2024
  • 8 min read

Taking Computational Thinking and Computer Science (JCS01), and want to learn tricks for tackling the course? Or are you thinking about taking the course, and want to know if it would be a good fit? We interviewed peer tutors for JCS01, and here is their advice about success, as well as information about the course.

 

 

Course Overview

Computational Thinking and Computer Science really focuses on developing a computer-science-oriented mindset. This mindset will help students both if they want to pursue further computer science, or if they do not, as the skills it teaches apply to many fields. Among these skills are problem-solving and persistence, and computer science develops these skills in a unique way. The course uses Python and, in addition to this computer science mindset, course topics range from graphics to the parts of a computer and how they interact.

In recent years, including the 2023-2024 school year, the instructor for JCS01 has been Dr. Thananjeyan.

 

 

Course Topics

The first semester focuses on the interactions between hardware and software and an understanding of how the computer works together. Topics include:

  • Parts of the computer—basics of hardware, how hardware and software work together to make the computer function

  • Conversions between binary, octal, hexadecimal, and decimal

  • Programming (using Python)—about half of the first semester is spent on this. Students will cover:

    • Printing (displaying text to the screen)

    • Loops

      • While loops

      • For loops

    • Turtle Graphics (not using Python)


The second semester mainly covers graphics and game theory. Topics include:

  • Graphics

    • Finishing Turtle Graphics

    • Graphics in Python

  • A unit on logic, including topics like inductive vs. deductive arguments

  • Game theory

    • Nash Equilibrium

    • Dominant strategies

    • Using mathematical models to represent parts of games and associated strategies

    • Finding the best path to winning in a game

    • Combinations and permutations

 


Course format and workload

  • There is no textbook reading or other preparation that needs to be done before class

  • Classes are approximately one hour long

  • There are 1 or 2 assignments due weekly, estimated to take 1-7 hours combined

    • Note that the exact time can vary significantly from week to week and student to student

    • The workload is estimated to be slightly heavier in the second semester than in the first

    • There are both written assignments and programming assignments in JCS01

      • Written assignments are typically about 8-10 questions, and ask students to solve written problems (e.g., a combinations and permutations problem) or describe/explain concepts

      • Programming assignments typically have 2-3 separate programs that students need to code

    • If you have not covered a concept in class, but it is on your weekly homework, don’t be afraid to reach out to your instructor for an extension! This is absolutely a valid reason to request one.

  • There is also a midterm and final exam in both semesters of JCS01—more information about exams is below under “Exams and exam preparation”

 


Frequently challenging topics

Topics that many students found challenging include:

  • Combinations and permutations

    • There are many multi-step problems for this topic

    • It can be challenging to determine if a combination or permutation should be used

  • Game theory

The list of frequently challenging topics is meant to be a guide for where problem points may arise, so that you can best direct your study efforts and be prepared.

 


Available supports

  • Peer tutors are students who have previously taken the course and are available to help students

    • Peer tutors can be reached through appointments at the Writing and Tutoring Center. Schedule an appointment here: Stanford OHS Writing & Tutoring Center (mywconline.com)

    • Many peer tutors are also easily reachable through Pronto. Feel free to message a peer tutor if you’re stuck on an assignment and need a nudge in the right direction!

  • Your instructor is also there to help you

    • Instructors hold office hours once or twice a week, where students can come to discuss course topics. Note that you do not need to have a particular question to attend office hours—you can come to discuss a general topic, explore an idea, ask a specific question about homework, and much more! You are never inconveniencing your teacher by attending office hours—they want to talk to you.

      • Note that office hours may need to be scheduled ahead of time.

    • Instructors can also be reached by email. You might decide to email your teacher, for example, if you have a (relatively quick) question that needs to be answered before their next office hours.

 


Exams and exam preparation

There is a midterm and final exam in both semesters of JCS01. These exams are pen-and-paper and proctored in-person.

Some good ways to prepare for these exams:

  • Go through all the assignments and, if you have any doubt about any of the topics, practice that topic a lot. The assignments are very helpful in terms of understanding what topics and sorts of problems will be on the exams.

  • Review the questions that you did in class, as well as the class slides

  • If you deeply understand everything when it is taught, you will be well prepared for the exams. This way, you will only need to refresh your understanding before tests, rather than needing to learn additional concepts. One of the best things you can do to prepare for exams is to simply try to grasp, deeply, all the material being taught in class.

  • Always ask questions if you’re confused! The material continues to build on earlier material throughout the year, so if you get confused on one topic it may make learning future topics harder. If you don’t understand a topic by asking questions in class—or if you don’t feel comfortable asking a particular question in class—definitely talk to a peer tutor or attend office hours.

  • Attending office hours or peer tutoring is another great way to prepare for exams. If you made a mistake on an assignment, you can always go to office hours or peer tutoring to understand what you did wrong. You can also ask to review topics that you are confused or just not fully confident on, or to ask for anything else you need in your studying.

  • Practice writing code by hand. It is something unique to get used to, both because you will not be able to type (if you don’t space things out correctly, you can’t just hit “enter”) and because you cannot test your code to catch syntax errors, for example.

  • There is not a lot of study material for JCS01. You may have to make study material for yourself to some degree, such as making up problems or altering problems you were given in class or as assignments.

  • Group study sessions can be another great way to study for exams. Your classmates might have understood something that you missed in class, and you might have understood something that they missed.

Note that for the first semester, study guides are often provided. For the second semester, they are typically not provided.

Note also that coding portions of exams have been graded in the past mostly on the logic of the program, and less on how syntax-perfect they are or how perfectly they would work if run.

 


Outside resources

The following resources, apart from course resources like class slides, have been helpful to past students:

  • W3 Schools can be a great resource, both for understanding class concepts and also because you can sometimes find commands that are not in the regular class syllabus but that can be very helpful in doing assignments. W3 Schools website: W3Schools Online Web Tutorials. (Many resources are available without needing to make an account.)

  • Typically, the materials found on Canvas are sufficient, but there are many outside resources that you can find if you need more explanation/practice with a topic.

 


Favorite topics

To get an idea of why you might wish to take this course, here are some of previous students’ favorite things about JCS01:

  • Python programming in the first semester—it’s so satisfying when a program finally works!

  • It’s so interesting to see how topics build on each other. For example, the learnings of the first half of the first semester about hardware and binary give interesting context as students begin to program later in the first semester.

  • Time in class was very fun! Dr. Thananjeyan led a very fun and interesting class.

  • JCS01 is more about learning than about grades.

 


Tips for success

  • You are allowed to resubmit assignments in JCS01. This is an excellent choice, both because it will increase your grade, and because you will learn a lot in the process (which will also help to prepare you for exams).

    • Note that it is not atypical for students to get 7s or such on assignments at times. If you aren’t getting the grades you want on assignments, you are not alone, and there are many ways to both improve your understanding and your grade.

  • JCS01 is a large shift in mindset. A shift to a mindset where students understand that a program will rarely work the first time, and that troubleshooting and temporarily failing is perfectly normal. It is also a shift to a mindset where students are not thinking about how to solve some large problem, but how to break a large problem into a series of smaller, solvable problems.

  • Work on developing good programming habits. For example, good variable naming convention, comments, and program structure will make your code far more readable—to you, and to others! Other important programming habits regard ways to reduce syntax errors, such as writing both parentheses first, then what needs to go inside of them, so as never to miss a parenthesis.

  • The slide decks from class are published on Canvas. If you didn’t understand something in class, you can go back to the slides after class to try to figure it out.

  • In computer science, you may have to self-study at times to fully understand—and have the time to practice—all the concepts.

  • Taking notes can be very helpful in JCS01, both because the process of taking notes can help you remember material better, and because those notes are useful to refer to later.

  • Always ask for help when you need it! All the material builds off each other, so if you struggle with one topic, you will continue to struggle later. You also don’t need to feel like you have to try to learn new things on your own—if you were expected to learn things alone, you wouldn’t be taking a course with teachers, peer tutors, and peers to support you. Although some self-study will be very helpful in terms of practicing, reviewing topics, or figuring out some specific details, you can always reach out when you have questions. You should never feel like you can’t ask for support when you’re struggling with something.

  • Start assignments early. Try to at least look over the assignment a week before it’s due, so that you can try to determine if there will be any sticking points and ask questions as needed. Also note that assignments often seem easy at first but end up being harder than you think (especially if you run into “bugs,” which are problems with your code). It is a very good idea to try to start working on your assignments a week before they’re due, so that you have some extra time in case you run into an issue.

  • Take care of yourself—it’s okay to ask for extensions sometimes, if things have taken much longer than expected, for example. Students should certainly try to complete homework on time, and learning to manage time in this way will be very helpful in all OHS courses. However, if something is really taking far longer than expected, or if you have many assignments due at the same time, it’s okay to ask for an extension sometimes.

    • If enough students ask for an extension, the instructor will extend the deadline for all students in the class. Note that you may not receive an email response to your particular request for an extension in this case.

    • The instructor has historically been pretty lenient with extensions. However:

      • To give your instructor adequate time to see and respond to a request for an extension, you should be submitting an extension no fewer than 12 hours prior to the due date. You should try to submit an extension request as soon as possible, as this will increase the chances of it being granted.

      • Sending an email to request an extension does not mean that the extension has been granted! Unless you have a response from your instructor saying that an extension has been granted, your extension has not yet been granted.

  • JCS01 can be really hard at times. It will prepare you very well for later courses, both in computer science and in other courses, but it can be a hard process to get there. Know that you are never alone, and that there are always many, many people who are there to help you.

 
 
 

Recent Posts

See All
Advice from Student Leader Rachael L.!

Rachael is the captain of the robotics club, an editor of the Pixel Journal, and the club leader of the Biology Olympiad Club. Read on to hear her advice for student leaders! What skills have you lear

 
 
 

Comments


Board of Student Academic Support and Services

Feel free to reach out to us by visiting the contact page.

bottom of page