CS106A Programming Methodologies

  • Spring 2020 (latest) course website slides ✅ | assignments ✅
  • Summer 2019 (with Java), course website slides ✅ | assignments ✅
  • 2007 SEE-Stanford Engineering Everywhere ( iTunes U , YouTube ) slides ✅ | assignments ✅ | videos ✅

Prerequisite : None

Description :

CS106A is the introductory course to computer science at Stanford University. According to the decription on SEE, this course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing.

I got to know the course from iTunes U. It is CS106A that made me a self-learner.

The lecture video was recorded over a decade ago (in 2007) and it seems a bit old now. However, the basic concept of programming is never out of date. Personally, I learned CS106A by watching the lecture video and referring to new lecture slides (in Winter 2017 ), and I managed to complete assignments of Winter 2017.

It is worth noting that the latest CS106A is using Python instead of Java. Both languages are good and you can choose whichever you would like.

After finishing CS106A, you can choose either CS106B or CS106X. According to CS106B's 18 winter slide, their relationship is as follows:

  • first course in programming, software development, coding style
  • text and graphics; basic data and algorithms; problem solving
  • big data ; complex data structures
  • algorithm analysis and algorithmic techniques such as recursion
  • programming style and software development practices
  • similar content to CS106B, but faster and more complex
  • expects significant coding experience, ability to learn quickly

Personally, I chose CS106X because I think it's more challenging. You can have a glance at these two courses here at LearnCS( CS106B ) and it's up to you to choose either course. By the way, CS106B's 18 winter lecture video is available on YouTube so maybe it's a better choice, maybe.

In fact, there is another course in CS106 family: CS106L, which is purely about C++. It is a relatively short course, and you can take it along with CS106B/CS106X if you'd like.

Schedule (2019 Winter)

  • Welcome to CS106A! slide code
  • Control Flow slide code
  • Decomposition slide code
  • Intro to Java slide code
  • Control Flow Revisited slide code
  • Graphics + Loops slide code
  • Methods Revisited slide code
  • Tracing Programs slide code
  • Animation slide code
  • Events slide code
  • Memory slide
  • Text slide code
  • Files slide code
  • Arrays slide code
  • ArrayLists slide code
  • Matrices slide code
  • HashMaps slide code
  • Collections slide code
  • Interactors slide code
  • Variable Type Design slide code
  • Classes slide
  • Data Visualization slide code
  • The Internet slide code
  • WebApps slide code
  • Life After CS106A slide code
  • Overview & Final Review #1 slide
  • Final Review #2 slide

Assignment (SEE)

  • Karel handout starter code
  • Simple Java handout starter code
  • Breakout handout starter code
  • Hangman handout starter code
  • Yahtzee handout starter code
  • NameSurfer handout starter code
  • FacePamphlet handout starter code

What's Next

  • CS106B | CS106X | CS106L

Navigation Menu

Search code, repositories, users, issues, pull requests..., provide feedback.

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly.

To see all available qualifiers, see our documentation .

  • Notifications You must be signed in to change notification settings

Programming Assignments solutions for CS106A course in MIT Open-Course-Ware

velurimithun/CS106A-Solutions

Folders and files.

NameName
4 Commits

Repository files navigation

Cs106a-solutions.

Please look at these solutions only after trying very hard.

This repository contains solutions for all the programming assignments in CS106A course offered by SEE(Stanford Engineering Everywhere) which was taught by Mehran Sahami.

These solutions are for 2007 version. Don't know now they've updated those courses or not!!

Have a nice day :)

  • OpenEdge ABL 0.7%

Stanford University

Stanford engineering, s tanford e ngineering e verywhere, cs106a - programming methodology, lecture 1 - welcome to cs106a.

To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video

Welcome to CS106A

Course Staff

Why is the class called Programming Methodology?

Are you in the right class?

Class Logistics

Assignments and Grading

Midterm and Final

Grade breakdown

The Honor Code

  • 1 - Welcome to CS106A
  • 2 - Handout Information
  • 3 - Karel and Java
  • 4 - The History of Computing
  • 5 - Variables
  • 6 - readInt() and readDouble()
  • 7 - The Loop and a Half Problem
  • 8 - Information Hiding
  • 9 - Strings
  • 10 - Importance of Private Variables
  • 11 - The GImage Class
  • 12 - Enumeration
  • 13 - String Processing
  • 14 - Memory
  • 15 - Pointer Recap
  • 17 - Multi-dimensional Arrays
  • 18 - A Wrap Up of Multi-dimensional Arrays
  • 19 - An Interface
  • 21 - Review of Interactors and Listeners
  • 22 - Overview of NameSurfer - The Next Assignment
  • 23 - Introduction to Lecture's material - Searching
  • 24 - Principles of Good Software Engineering for Managing Large Amounts of Data
  • 25 - Defining a Social Network for Our Purposes
  • 26 - Introduction to the Standard Java Libraries
  • 27 - Life After CS106A
  • 28 - The Graphics Contest Winners
  • About the Lecture TITLE: Lecture 1 - Welcome to CS106A DURATION: 50 min TOPICS: Welcome to CS106A Course Staff Why is the class called Programming Methodology? Are you in the right class? Class Logistics Assignments and Grading Extensions Midterm and Final Grade Breakdown The Honor Code Why Karel?

Course Details

Course description.

This course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Programming Methodology teaches the widely-used Java programming language along with good software engineering principles. Emphasis is on good programming style and the built-in facilities of the Java language. The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies. In fact, most Programming Methodology graduates end up majoring outside of the School of Engineering. Prerequisites: The course requires no previous background in programming, but does require considerable dedication and hard work.

  • DOWNLOAD All Course Materials

FPO

Sahami, Mehran

Outside of work, I enjoy spending time with family, playing the guitar, going on outdoor excursions, and sleeping (which seems to be getting rarer and rarer these days).

Lecture 1
No Handouts
No handouts

Assignments

Section assignments.

AssignmentSolutionsDistributed
Lecture 4
Lecture 7
Lecture 10
Lecture 13
Lecture 16
Lecture 18
Lecture 21
Lecture 24
Lecture 27

Programming Assignments

AssignmentInstructionsStarter CodeDistributed
1. Karel Lecture 2
2. Simple Java Lecture 6
3. Breakout! Lecture 10
4. Hangman Lecture 14
5. Yahtzee! Lecture 18
6. NameSurfer Lecture 22
7. FacePamphlet Lecture 25
Practice Midterm
Practice Final
Windows Users
Macintosh Users
Software Resources

Course Sessions (28):

Watch Online: Download: Duration:
Now Playing Download 50 min
Welcome to CS106A, Course Staff, Why is the class called Programming Methodology?, Are you in the right class?, Class Logistics, Assignments and Grading, Extensions, Midterm and Final, Grade Breakdown, The Honor Code, Why Karel?

Transcripts

Watch Online: Download: Duration:
Watch Now Download 48 min
Handout Information, Section Sign-up, Karel Commands, An Algorithm vs Program, Syntax of a Karel Program, Running a Karel Program, Creating Methods, SuperKarel, A for Loop, A While Loop, Karel Conditions, If Statement, Putting it All Together
Watch Online: Download: Duration:
Watch Now Download 51 min
Karel and Java, Common Errors, Comments, Pre-conditions and Post-conditions, Decomposition, The DoubleBeepers Example, Importance of Good Software Engineering, The Right Decomposition, The CleanUpKarel Example
Watch Online: Download: Duration:
Watch Now Download 48 min
The History of Computing, Computer Science vs Programming, What Does the Computer Understand?, The Compilation Process, Java is an Object Oriented Language, Inheritance, Instance of a Class, The acm.program Hierarchy, Your First Java Program, A ConsoleProgram Example, The Graphics Window, The Sending-Messages-to-a-GLabel Example
Watch Online: Download: Duration:
Watch Now Download 49 min
Variables, Data Types for Variables, Syntax for Using Variables, Classes as Types, Objects as Variables, Invoking Methods on Objects, Graphics Coordinates, Operations on the GObject Class and its Subclasses, Drawing Geometrical Objects, A FunGraphics Example, Expressions and Operators
Watch Online: Download: Duration:
Watch Now Download 56 min
readInt() and readDouble(), The Division Operator w.r.t ints and Doubles, Order of Precedence for Operators, Type Casting, Shorthands, Constants, The Boolean Data Type, Value Comparisons, Boolean Expressions, Short Circuit Evaluation, Statement Blocks, Scope of Variables, Cascading if, The Switch Statement, The For Loop, The While Loop
Watch Online: Download: Duration:
Watch Now Download 51 min
The Loop and a Half Problem, For Versus While Loop, The CheckerBoard Program Example, Methods in Java, Examples of Methods, The FactorialExample Program, Returning Objects from Methods
Watch Online: Download: Duration:
Watch Now Download 49 min
Information Hiding, The Void Return Type, Parameter Passing Between Methods, Bad Times with Methods, Using Classes, Instance variables vs Local Variables, The RandomGenerator Program Example, The RollDice Program Example, The setSeed() Method
Watch Online: Download: Duration:
Watch Now Download 52 min
Strings, Writing Your Own Class, Public and Private Visibility, Creating a New Class, The Constructor Method, Shadowing of Variables and the 'this' Keyword, Using the Created Class, Objects are Called by Reference not Called by Value, Class Variables, The JavaDoc, The Student Program Example
Watch Online: Download: Duration:
Watch Now Download 47 min
Importance of Private Variables, Extending the Student Class, Overriding Methods, The acm.graphics Package, GCanvas, Methods Common to All GObjects, Interfaces and Methods Defined by Them, The BouncingBall Program Example, The Geometry of the GLabel Class, The GArc Class
Watch Online: Download: Duration:
Watch Now Download 50 min
The GImage Class, The GPolygon Class, The GCompound Class, Event Driven Programs, The ClickForFace Program Example, Responding to Mouse Events, Responding to Keyboard Events, The UFO program Example
Watch Online: Download: Duration:
Watch Now Download 49 min
Enumeration, Characters, The ASCII Subset of Unicode, Reading Characters, Math on Characters, char as a Primitive Type; the Character Class, Strings and Their Manipulations
Watch Online: Download: Duration:
Watch Now Download 47 min
String Processing, Tokenizers, Encryption
Watch Online: Download: Duration:
Watch Now Download 46 min
Memory, Different Sections of Memory for Different Types of Variables, Memory Allocation Mechanics, The Pointer Viewpoint, The Binky Pointer Fun Video
Watch Online: Download: Duration:
Watch Now Download 48 min
Pointer Recap, Why are Objects 'Call by Reference' Instead of 'Call of Value'?, Wrapper Classes for Primitive Types, Files, Code for Opening, Reading and Closing Files, Exceptions, Code for Writing Files
Watch Online: Download: Duration:
Watch Now Download 50 min
Array, Creating a New Array, The ++ Operator, Actual Size / Effective Size of the Array, An Array as a Parameter, Initialize an Array During Creation, An ArrayList
Watch Online: Download: Duration:
Watch Now Download 50 min
Multi-dimensional Arrays, An ArrayList, The Template Class, Methods in the ArrayList Class, An Example Program Using ArrayList, ArrayLists Hold Objects, An Example Program with an ArrayList of Glabels, The GrayImage Example Program
Watch Online: Download: Duration:
Watch Now Download 47 min
A Wrap Up of Multi-dimensional Arrays, The ArrayList Way, Pros and Cons : ArrayList vs. Array, Debugging, Approaches to Debugging, The Debugger in Eclipse
Watch Online: Download: Duration:
Watch Now Download 50 min
An Interface, How are Interfaces Implemented, A Map, The HashMap Class, Methods of the HashMap, The Collection Hierarchy, The Map Hierarchy, An Iterator, A HashMap Example
Watch Online: Download: Duration:
Watch Now Download 45 min
GUI, Interactors in the Context of a Java Program, The Swing Interactor Hierarchy, Window Regions, Creating Interactors, Example Programs, Exploring More Interactors, The InteractiveDrawFace Program Example
Watch Online: Download: Duration:
Watch Now Download 48 min
Review of Interactors and Listeners, Example Programs, The Use of the Two Ways Shown in the Examples - Using getSouce and getActionCommand, TextField Example, Layouts, The Temperature Conversion Example, The TextAndGraphics Example
Watch Online: Download: Duration:
Watch Now Download 46 min
Overview of NameSurfer - The Next Assignment, Components and Containers, Listeners for Components, Create a Program Which Extends Program, The ComponentListener Interface, The MusicShop Example Program, The MusicShopDisplay Example Program
Watch Online: Download: Duration:
Watch Now Download 51 min
Introduction to Lecture's material - Searching, Sorting and Algorithmic Efficiency, Searching, Linear Search, Efficiency of Linear Search, Binary Search, Efficiency of Binary Search, Comparing Search Efficiencies, Sorting, The Selection Sort Algorithm, Efficiency of Selection Sort, The Radix Sort Algorithm
Watch Online: Download: Duration:
Watch Now Download 47 min
Principles of Good Software Engineering for Managing Large Amounts of Data, Principles of Design, The Collection Hierarchy, Useful Methods of Collection, The FlyTunes Example Program - An Online Music Store, Defining the Song Class, Defining the Album Class, Seeing the Program Run, Considering the Data Structures Needed, Reusing Data - Shallow Copy vs. Deep Copy, The FlyTunesStore Program Code
Watch Online: Download: Duration:
Watch Now Download 47 min
Defining a Social Network for Our Purposes, See What the Program Needs to Do, The Six Degrees of Separation Phenomenon, Concurrency, A Thread, The Runnable Interface, Creating a Thread, Example Program, Having Shared Data Between Your Threads
Watch Online: Download: Duration:
Watch Now Download 42 min
Introduction to the Standard Java Libraries, A JAR File, Creating a JAR File, Creating an Applet, Standard Java Programs Without Using the ACM Libraries, Other Resources - Learning More Java
Watch Online: Download: Duration:
Watch Now Download 42 min
Life After CS106A, The CS Major, Other Possible Majors
Watch Online: Download: Duration:
Watch Now Download 42 min
The Graphics Contest Winners, Review for the Final, Example Question 1, Example Question 2, A Wrap-up

Stanford Center for Professional Development

  • Stanford Home
  • Maps & Directions
  • Search Stanford
  • Emergency Info
  • Terms of Use
  • Non-Discrimination
  • Accessibility

© Stanford University, Stanford, California 94305

Teaching Team

Juliette

Announcements

Welcome to CS106A - cs106a.stanford.edu - this page currently shows the Winter quarter information, but it will switch to Spring by the first day of class, so this is the right url. Needed zoom links and whatnot will, of course, be published on this page when the time comes. While we are working on updating the site, check out some FAQs for the course during Spring Quarter . If you have additional questions, please reach out to the Head TA, Juliette Woodrow, at [email protected].

Frequently Asked Questions Where can I find the zoom link for the live lectures? It will be posted on this webpage before class time on Monday! Are lectures available on video to watch later? Yes! But there are some conditions... We are running lecture live, as we are accustomed to, and it will be interactive with lots of coding exercises to try as we go. We encourage you to join us for the live lecture, getting the full experience. We will have something like 3, small, in-class quizzes. Even if you are watching lecture by video, you will need to be available for the quizzes. If you cannot take the quizzes during class time, there will be a window of time after class during which you can take the quiz. You can reach out to Juliette if taking the quiz during class time will be an issue. We will announce the date and time for these once we figure that out. Are there discussion sections? Yes! There will be weekly discussion sections starting week two. These must be attended live. There are many available times, but the scheduling of that is done later by CS106A staff, so don't worry about it in axess. We will open signups for section towards the end of week one. How many units is CS106A? The "can be taken for 3 units" option is, in effect, a long-running joke by the registrar to confuse students. Undergraduates must take the class for 5 units. Grad students have the option to take it for 3 units, so they can avoid a university limit on the units they may take. So the 3 unit option is a rule, created by the university, for the purpose of avoiding a different rule, creåted by a different part of the university. In any event, the content and workload of CS106A is not changed by any of this. Is there an ACE section for CS106A? Yes! CS100A, also known as CS106A ACE, is a 1-unit supplementary section designed to build a stronger foundation in computer science. Students participating in ACE will attend an additional weekly section and participate in exam review sessions and individual tutoring. Section will take place Thursdays 4-6pm PT on Zoom, with options for asynchronous participation for those outside the United States. ACE is one of the School of Engineering’s Equity and Inclusion Initiatives. We especially want to provide an opportunity for students who come from educationally disadvantaged backgrounds or for anyone who feels they might need additional support in order to succeed. We limit enrollment to enable small classes that allow students to have one-on-one interactions with the TA. If you are interested in joining the ACE section, please apply at this link (Priority deadline: 3/24 at 5pm PT. Regular deadline: 4/2 at 5pm PT). If you have any questions about ACE, feel free to reach out Sonja Johnson-Yu (CS106A ACE TA) at [email protected] .

Last spring, Stanford offered the first few weeks of CS106A to over 10,000 people around the world for free. We are doing it again in a few weeks! Checkout the Code in Place webpage here . Our secret ingredient was the community of 908 section leaders who volunteered their time to give students live weekly, interactive support in small, virtual groups for 40 minutes. Section leaders joined from over 350 cities on six continents, spoke more than 30 different languages, and came from every walk of life. We think this model can change the way we think about teaching and learning at scale.

This is where you come in. You have just spent 10 weeks working hard to learn Python and the fundamentals of computer science. If you are excited to share this knowledge with others, we invite you to join us in our effort to make high-quality computer science education accessible to all. We are accepting applications to section lead until March 25. Teaching obligations will run for five weeks, from April 19 until May 21. Your time commitment will be around five hours per week. And don’t worry, you don’t have to do any grading. Many more details and FAQs are at this link . Most importantly, each new volunteer means 10 more students from around the world can learn to love coding.

If you have any questions about this, feel free to reach out to [email protected].

Today is our last class of CS106A this quarter :'(. Nick and Juliette will have a regular zoom after class for anyone who has questions or just wants to chat. It will be the same zoom link as Nick's office hours and I will include it here as well. Zoom Link .

We just released your last homework of the quarter. You can check out assignment 8 here . It is due Wednesday, March 17th at 11:55pm PT.

Join us for an exploration of community wellbeing and cultural preservation through technology, with guest speakers Amelia Winger-Bearksin, Jason Lewis, Oliver Bear Don’t Walk, and Aniea Essien. The CS198 program is putting on a panel about decolonizing tech on Wednesday, March 17th from 5-6:30pm PT. Find more info here .

We are using a different link for lecture today due to technical difficulties. Zoom link for lecture .

Passcode : 123789

Lecture 4 has been posted to Canvas! Make sure to watch this lecture before Wednesday's lecture.

The LaIR opens 5pm PDT tonight! Check out the Zoom details page for the necessary links.

  • Nick is going to have special office hours today from 4-5pm PT to review the basic examples at the top of today’s lecture. Office hours will be at Nick's usual zoom link .
  • The second part of Homework 1 has been released. The entire homework is due Wednesday night at 11:55pm PT. You can take off the weekend and start on Tuesday, but we would not recommend waiting until Wednesay to start.
  • LaIR help hours start Monday from 5-9pm PT. You can find more information about LaIR on the Zoom info page .
  • There will be no class on Monday. We will post a recording on Canvas on Tuesday that you should watch before Wednesday's lecture.

Nick updated the experiemental server that he used in lecture today. Trying the experimental server pages should work now. When you click the link for any of the experimental server pages (found in the lecture notes from today), log out, and then it should log you in as yourself.

Thanks so much for all of your hard work in CS106A this quarter! Nick and Juliette are blown away by all that you accomplished over the past 10 weeks. We love to hear from CS106A alumni as they move at Stanford and in life. Feel free to email us with questions or just life updates. Have a safe a restful summer break! Grades have been posted.

We have released grades for the third quiz on Gradescope . Solutions as well as statistics about the exam can be found on the Quiz 3 Solutions handout . Regrade requests will open later tonight and will close Friday, June 4th at 2pm PT.

Nick and Juliette really enjoyed having you in class this quarter! Feel free to reach out to us with any questions that you have. We both still have our office hours this week if you want to stop by and say hi :)

The Quiz is scheduled to take place on Friday, May 28th between 1:00 p.m and 1:50 p.m PT . If you have a class or time zone conflict, please email Juliette to schedule an alternate exam time. It will be administered digitally; instructions to set up BlueBook, our digital assessment platform, are posted here . Quiz #3 will be approximately 30 minutes. Checkout the Quiz 3 Review handout for practice.

Once it is time for you to start the quiz, you will click the button below which will provide you with the file to download as well as an exam code for you to use to load the quiz on BlueBook. All students can use this link, even if you have arranged for an alternate duration, time, or platform for the diagnostic. You must be enrolled in the class to access the diagnostic.

Starting at 1pm PT please only post questions privately on Ed. If you have a question about the problem statement or about logistics during the diagnostic you may post privately on Ed. Please refrain from posting anything about the diagnostic on Ed until we release solutions next week.

Unless you have arranged with Juliette for an alternate sitting, you must begin the exam between 1pm and 1:50pm PT. Once you download the exam, we expect you to turn it in within the time allotted for the quiz. However, please note that your time does not officially start until you open the file in BlueBook this way no one is disadvantaged for slow download speed.

You will have 30 minutes to complete the quiz. We recommend pulling up any solutions you want to consider before clicking the button below. You can consult lecture notes, your notes, practice problems, section problems, and the internet. You cannot collaborate or discuss with anyone while taking this quiz. Even though you have Pycharm to test your code, you cannot copy or paste into or out of BlueBook. So, it is a better strategy to write down all of your main ideas in BlueBook rather than spending any time testing in Pycharm. You can make BlueBook into a smaller window by hitting escape or the double arrows in the top right of the screen (top left if you are on mac).

If you run into any issues with BlueBook during the exam, check out this handout .

Join us for a quiz review on Thursday at 9am PT at this zoom link .

Also, Nick just added another section to the experimental server with optional, extra challenge dict problems for more practice with dict logic. Check it out while you are studying.

A common question students in CS 106A have towards the end of the course is how to use their newfound programming skills to work on and contribute towards important or interesting problems of their choosing. In your BabyNames and BiasBars assignments you gained experience processing data and visualizing it to glean insights. There are tons of datasets out there that can help us answer meaningful questions. Use your CS106A knowledge to process a dataset, create an interesting visualization, and submit it to the CS106A Data Art Show! A tiny amount of extra credit will be awarded to those who participate. More information on the Data Art Show can be found in the Data Art Show Handout . Submissions are due Monday, May 31st at 11:55pm PT.

We have released both parts of HW 7. You can checkout part a here . You can checkout part b here . Parts a and b are due Wednesday, May 26th at 11:55pm PT

Today in class, we discussed the retraction policy for CS 106A, which allows you to retract any work you've submitted if you feel it crossed the line of academic integrity. Please take the time to read through our handout detailing the policy.

We have released grades for the second quiz on Gradescope . Solutions as well as statistics about the exam can be found on the Quiz 2 Solutions handout .

There will be a student led review session on Friday night thanks to Connery. You can find more information at this link .

Juliette and some of the awesome section leaders are hosting a quiz review session on Sunday, May 9th at 8pm PT. Here is the zoom link for that session . We hope to see you here!

We have released all parts of assignment 5. The assignment is due Wednesday, May 5th. Check out part a . Use what we learned in class on Wednesday to make some cool drawings with Python. Check out part b . In part b, you are going to make some cool visualizations with data from the past.

We have put together two helpful handouts. Here is a link to a handout with keyboard shortcuts . Here is a link to a handout on doctests . These are both now new chapters in the python guide, so you can also find them there.

If you need some additional help with CS106A, you can sign up with the CTL. More information at this link .

Today in class, your are going to vote on your favorite bluescreen photo submissions. You can find the submissions to vote on here . You can find the form to vote on here .

We also posted the PyCharm installation handout . We will be using PyCharm for the rest of our assignments starting with homework 2 part b, so you will need to follow these steps before you are able to work on part b of Homework 2.

Black in CS is hosting Black LaIR this quarter starting week 2! Here is some more information!

Help with: CS106A and CS106B Every: Tuesday, Thursday (5-8pm PT), Saturday (12-3pm PT) Link to sign up for help (CS106A): QueueStatus Social media/contact: @stanfordblackincs, [email protected]

If you feel comfortable doing so, we’d appreciate it if you could let us know your preferred name and your preferred pronouns. Also, if you can provide an audio recording of the pronunciation of your name, that would be great. Of course, this information is optional to provide and you can provide any portion of it that you like. These questions have no impact on your grade. The information just helps us provide you with a more personalized experience in the class. You can provide this information at the website: https://cs198.stanford.edu/profile

Section assignments have been made. Students who filled out the section signup on time should have received an email with details of their section.

If your section time no longer works for you or you were unable to sign up for a section in time, visit this website or click 'Section Management' in the Section dropdown to join a section. This page will also have a link to a list of all the section times for students wishing to make up a section and auditors.

Note that section participation is required for all enrolled students in CS 106A.

Section Signups are open! You can sign up for section by going to this page , logging in, and clicking the form. Section signups are due on Sunday at 5pm PDT and are not first come first serve.

We just released the first part of Assignment 1 . Write your very first programs with Bit. Wahoo! We will release the second part after class on Friday. The whole thing is due Wednesday, April 7th at 11:55pm. Problem 5 is similar to an example we'll do Fri, so you might want to wait on that one.

Welcome to CS106A! Given the large size of our class, we’ll be running the lectures as a Zoom Webinar (rather than a Zoom Meeting, as Stanford’s Zoom Meetings have a maximum size of 500 students). As a result, a few things will be different than what you might be used to in a Zoom Meeting. You cannot access the zoom link from Canvas. You can find the link to lecture on the zoom info page . Canvas will only show previously recorded lectures (usually a few hours after the live class has finished).

Also, you won’t be able to see video/audio from other students in the class during the webinar—you’ll only see/hear the course staff.

If you have questions during the class or want to see other questions that have been posted, please use the “Q&A” button at the bottom of your Zoom window (don’t use Chat). Our intrepid head TA, Juliette Woodrow, will be monitoring the Q&A during class. You can use the chat feature to interact with the teaching staff before and after class.

This quarter, we're using Ed Discussion for class Q&A outside of lecture. You can send a message to the staff by making it private, or you can send questions, or posts to the entire group. Make sure to check out our Course Communication Handout to understand what Ed is best for, but in short, it's a great forum for administrative questions, quick conceptual questions about office hours or understanding what an error message means.

A research study is being run this quarter on how to improve CS106A by Rose Pozos, a graduate student in the Stanford School of Education interested in CS education. Taking part in the study is optional and will have no impact on your grade, but it will potentially improve the class for future students. The study consists of answering short weekly questionnaires about your experience in this class and one final questionnaire during Week 10 reflecting on how CS106A went for you overall. Rose will keep all of your answers confidential and will not share any individual responses with the CS106A teaching team. You can find out more about the study in the brief video titled “Invitation to CS106A research study” that will be available on the CS106A Canvas page of class videos and you can sign up to participate in the study here . The video invitation is here .

CS100A, also known as CS106A ACE, is a 1-unit supplementary section designed to build a stronger foundation in computer science. Students participating in ACE will attend an additional weekly section and participate in exam review sessions and individual tutoring. Section will take place Thursdays 3:30-5:30pm PT on Zoom, with options for asynchronous participation for those outside the United States.

ACE is one of the School of Engineering’s Equity and Inclusion Initiatives. We especially want to provide an opportunity for students who come from educationally disadvantaged backgrounds or for anyone who feels they might need additional support in order to succeed. We limit enrollment to enable small classes that allow students to have one-on-one interactions with the TA.

What is CS106A?

We put together some handouts to help you understand where we are going to go in CS 106A and how we plan to get there.

The Syllabus handout has details on course logistics. Read this to get a sense for what CS 106A is going to entail. The General Course Information handout has a bit more info about the happenings in CS 106A. The Course Placement handout has details on deciding between CS 106A and CS 106B. The Honor Code handout has details on how the Honor Code applies in the context of the work you'll be doing in CS 106A.

The Course Schedule page shows you the topics that we are going to cover in CS106A. We will also post materials from lecture on the schedule page. The Office Hours page has contact information for teaching team. Office hours will start in week one.

Finally, the Course Communication handout has details on where to go when you need help in the class.

The second quiz is scheduled to take place on August 9th between 1:30 p.m and 2:40 p.m PT .

Starting at 8am PT please only post questions privately on Ed. If you have a question about the problem statement or about logistics during the diagnostic you may post privately on Ed. Please refrain from posting anything about thequiz on Ed until we release solutions

Unless you have arranged with Tara for an alternate sitting, you must begin the quiz at 1:30pm and must submit 70 minutes after that, with a short grace period during which you can submit.

You will have 70 minutes to complete the quiz. We recommend pulling up any solutions you want to consider before clicking the button below. You can consult lecture notes, your notes, practice problems, section problems, and the internet. You cannot collaborate or discuss with anyone while taking this quiz. Even though you have Pycharm to test your code, you cannot copy or paste into or out of BlueBook. So, it is a better strategy to write down all of your main ideas in BlueBook rather than spending any time testing in Pycharm. You can make BlueBook into a smaller window by hitting escape or the double arrows in the top right of the screen (top left if you are on mac). You can ignore any warnings from BlueBook about needing to turn off your wifi.

One of our awesome section leaders, Tori, is holding a review session on Saturday, August 7th at 2pm PT. Zoom Link .

Checkout the recording of the reivew session .

Checkout the slides from the review session .

The second quiz is scheduled to take place on August 9th between 1:30 p.m and 2:30 p.m PT . If you have a conflict, please email Tara to schedule an alternate exam time. It will be administered digitally; instructions to set up BlueBook, our digital assessment platform, are posted here . Quiz #2 will be 70 minutes. Checkout the Quiz 2 Review handout for practice.

We have released HW 6. This is a bit of a longer assignment, so we suggest that you start early. We have also posted a guided extension handout which shows some extensions you can do on the assignment for extra credit or that you can submit for the contest. You can check out the homework here . HW 6 is due Tuesday, August 3rd at 11:55pm PT

We have changed the date of quiz 2. Quiz 2 will now take place on Monday, August 9th starting at 1:30pm PT . Please reach out to Tara if you need to find an alternative time to take the quiz.

One of the joys of programming is the ability to make something totally of your own creation. In CS106A this quarter we are hosting a Contest where you can program anything you like using the concepts and tools we learn in class. See the contest handout for more details.

cs106a assignments

We have released all parts of assignment 5. The assignment is due due Tuesday, July 27th. Check out part a . Use what we learned in class to make some cool drawings with Python. Check out part b . In part b, you are going to make some cool visualizations with data from the past.

Please take a minute to fill out the Mid Quarter Evaluation . Juliette and Tara read each piece of feedback that you write, so let us know how the course is going!

Checkout this encryption puzzle . Solve it using paper and pencil only, no computers and no internet. Use your knowledge of spelling and punctuation to break the encryption. The first few people to email Juliette the plaintext solution (and a picture of their work) to this will get a small prize and bragging rights :)

We have released grades for the first quiz on Gradescope . Solutions as well as statistics about the exam can be found on the Quiz 1 Solutions handout .

The Quiz is scheduled to take place on July 9th at 1:30 p.m PT It will be administered digitally; instructions to set up BlueBook, our digital assessment platform, are posted here .

Right before quiz time, we will update this announcement with a button you will click which will provide you with the file to download as well as an exam code for you to use to load the quiz on BlueBook. All students can use this link, even if you have arranged for an alternate duration, time, or platform for the diagnostic. You must be enrolled in the class to access the diagnostic.

Starting at 8am PT please only post questions privately on Ed. If you have a question about the problem statement or about logistics during the diagnostic you may post privately on Ed. Please refrain from posting anything about the diagnostic on Ed until we release solutions next week.

Unless you have arranged with Tara for an alternate sitting, you must begin the exam at 1:30pm PT and must submit 35 minutes after that, with a short grace period during which you can submit.

You will have 35 minutes to complete the quiz. We recommend pulling up any solutions you want to consider before clicking the button below. You can consult lecture notes, your notes, practice problems, section problems, and the internet. You cannot collaborate or discuss with anyone while taking this quiz. Even though you have Pycharm to test your code, you cannot copy or paste into or out of BlueBook. So, it is a better strategy to write down all of your main ideas in BlueBook rather than spending any time testing in Pycharm. You can make BlueBook into a smaller window by hitting escape or the double arrows in the top right of the screen (top left if you are on mac). Please not that your time does not officially start until you open the quiz in Bluebook .

Hi everyone! All parts of Homework 3 are up. Checkout the assignment handout here. Good Luck!

There is a quiz on Friday, July 9th starting at 1:30pm PT. If you cannot take the quiz at 1:30pm PT on Friday, please email Tara no later than Wednesday at 9pm PT . If you have an OAE accommodation and have not already reached out to Tara, please do so as soon as possible.

We made a handout with quiz review problems and solutions . These problems are similar to the type of problems you will see on the quiz. You will take the quiz on a software called BlueBook. Please download this in advance of taking the quiz . Checkout the Downloading BlueBook handout for more information on BlueBook as well as a practice test you can take on BlueBook to try out the software. Reach out to Tara if you have any questions about BlueBook.

All parts of Homework 2 are up. Instructions for this homework are in the assignments drop down above. There are two parts, and you will need to download Pycharm for part 2. Use this Installing PyCharm guide to do so. Also, Feel free to reference the Image Reference guide for tips on working with images. Good Luck!

Hi everyone! All parts of Homework 1 are up. Instructions for this HW are in the Assignments drop down above. Feel free to reference the Python Guide for style of the Bit Reference Guide for all bit commands. Good Luck!

Hi everyone! Section sign ups go live today at noon PST and close Tuesday at 5pm PST. You can sign up for section by going to this page

Also, if you are having issues gaining access to the Zoom info , these will be resolved before class tomorrow!

Welcome to CS106A! We're gearing up for a fun quarter beginning on Monday, June 21st. Our lectures will be Monday-Thursday from 1:30-2:20pm PT. Enrolled students should read the Zoom info handout for details about how to get on the 1:30pm PT webinar on the first day of class. All lectures will be recorded and uploaded to Canvas which you can watch if you are unable to attend the lecture at the scheduled time.

Until then, reach out to Tara , the Head TA, with any questions you have.

© Stanford 2020 | CS106A has been developed over decades by many talented teachers. Website designed by Chris Piech .

  • Class Schedule
  • Zoom Details
  • Getting Help
  • Sign up for LaIR
  • Experimental Server
  • Bit Reference
  • Python Guide
  • Image Reference Guide
  • Grid Reference Guide
  • Doctest Guide
  • Drawing Reference Guide
  • Graphics Reference Guide
  • Keyboard Shortcuts
  • Office Hours
  • LaIR Signup

Canvas Icon

  • 🌱 Blank PyCharm Project

ed icon

Course Values

(by Prof. Brandon Bayne, UNC – Chapel Hill; via cs103; adapted for cs106a)

  • Nobody signed up for this. Not for the sickness, not for the social distancing, not for the sudden end of our collective lives together on campus. Not for an online class, not for teaching remotely, not for learning from home, not for mastering new technologies, not for varied access to learning materials.
  • We will foster intellectual nourishment, social connection, and personal accommodation. Accessible asynchronous content for diverse access, time zones, and contexts. Optional chances to learn together and combat isolation. Mastery learning approach that is designed around growth as a first principle.
  • We will remain flexible and adjust to the situation. Nobody knows where this is going and what we’ll need to adapt. Everybody needs support and understanding in this unprecedented moment.
  • The humane option is the best option. We are going to prioritize communicating clearly. We are going to prioritize supporting each other as humans.

Covid-19 edition 🦠

Note: This is the 8-week Summer Session website. If you are looking for the 10-week Summer Quarter website, please click here .

IMAGES

  1. GitHub

    cs106a assignments

  2. GitHub

    cs106a assignments

  3. Cs106a assignments by scat49quomas

    cs106a assignments

  4. (PDF) CS106A Handout 24 Assignment 5: Array Algorithms

    cs106a assignments

  5. CS106A Stanford Course Homework Assignment 1

    cs106a assignments

  6. CS106A

    cs106a assignments

VIDEO

  1. 【参考信息第159期】首次拍卖政务数据;监督暴力执法

  2. CS106A Assignment 7: Facepamphlet: Milestone 1

  3. Cs610 Assignment 1 2023 || Cs610 Assignment 1 Solution 2023 || Cs610 Assignment Solution 2023

  4. CS106A: Code in Place

  5. 【Lecture 04

  6. CS101 Assignment 2 Solution spring 2023

COMMENTS

  1. CS106A Assignments

    Assignments. All the assignment starter bundles for CS106A can be found here. Each download should include everything you need to start working on the assignment. The assignments come in zipped format which can be opened on both the Mac (using StuffIt Expander) and the PC (using Windows Vista, Windows 7, or XP).

  2. CS106A

    Solutions. This handout is intended to give you practice solving problems that are comparable in difficulty to those which will appear on the final exam. Our final exam will be on Friday, June 7th at 8:30am. Here are the room assignments (same as the Diagnostic exam): First names A-P in Hewlett 200. First names Q-Z in Hewlett 201.

  3. GitHub

    danpaz/cs106a-assignments. This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

  4. CS106A Assignments

    Depending on the week's topics, the accompanying assignment may consist of written problems, hands-on exercises with the tools, targeted coding tasks, and/or a larger complete program. Students self-report spending between 10 and 20 hours on each assignment. What is the policy on late assignments? Assignments will be due at 11:59pm Pacific Time.

  5. CS106A Assignments

    Welcome to CS106A! 1. Homework 1 - Bit 2. Homework 2 - Images 3. Homework 3 - Breakout 4. Homework 4 - Cryptography! 5. Bias Bars 6. Bajillion . Sections ... We have a great set of assignments planned to give you practice with the material presented in lecture and section. Programming is a skill best learned by doing and these assignments form ...

  6. CS106A Handouts

    CS106A Handouts. Handouts. This is the repository for all handouts that are given out in class, section, and practice sessions. All documents here are in Adobe Acrobat format; the reader for this format is available for free (look for the Acrobat Reader logo at the bottom of the Adobe Systems web site ). You can find extra paper copies of these ...

  7. PDF CS 106A

    programming assignments would be worth 60% of the grade, and the final would be worth only 15%, making it the same as the midterm. If, however, two Honor Code cases were discovered, the assignments would be worth only 50% and the final would be worth 25%, which is pretty much what we've traditionally done. If more Honor Code cases are

  8. CS106A

    As in any programming course, the assignments in CS106A require extensive hands-on use of a computer. The preferred platform for doing the work is the PyCharm development environment which runs under both Mac OS and Microsoft Windows.

  9. CS106A Home

    CS106A Programming Methodology. Spring Quarter 2022 Lecture MWF 12:15-1:15pm in Hewlett 200. Teaching team. Mehran Sahami. Instructor ️ sahami@ 🕗 Wednesday 2-4pm, Durand 325. Juliette Woodrow. Head TA ️ jwoodrow@ 🕗 Monday 2-3:30pm, Durand 303 🕗 Tuesday 2:30-4pm, Durand 303. Announcements. Final Exam Grades and solutions.

  10. GitHub

    Assignments from Stanford University Programming Methodology course (CS106A) plus a selection of exercises from the book "The Art and Science of Java" by Eric S. Roberts. The website is: cs106a.stanford.edu.

  11. PDF Assignment #1

    1. Your first task is to solve a simple story-problem in Karel's world. Suppose that Karel has settled into its house, which is the square area in the center of the following diagram: Karel starts off in the northwest corner of its house as shown in the diagram. The problem you need to get Karel to solve is to collect the newspaper ...

  12. CS106A Programming Methodologies

    However, the basic concept of programming is never out of date. Personally, I learned CS106A by watching the lecture video and referring to new lecture slides (in Winter 2017), and I managed to complete assignments of Winter 2017. It is worth noting that the latest CS106A is using Python instead of Java.

  13. PDF CS 106A

    Assignment 7). The assignments will become slightly more difficult and require more time as the quarter progresses. Thus, the later assignments will be weighed slightly more than the earlier ones. Except for Assignment #7 (which is due at the very end of the quarter), each assignment is graded during an interactive, one-on-one session with your

  14. CS106A

    CS106A YEAH Hours are Your Early Assignment Help Hours, a weekly session intended to help students get started on the CS106A assignments. We'll break the assignment handout into manageable chunks, go over useful resources, and discuss approaches for major milestones of the assignment. Stop by YEAH Hours if you:

  15. GitHub

    Programming Assignments solutions for CS106A course in MIT Open-Course-Ware. Please look at these solutions only after trying very hard. This repository contains solutions for all the programming assignments in CS106A course offered by SEE(Stanford Engineering Everywhere) which was taught by Mehran Sahami.

  16. Stanford Engineering Everywhere

    The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies. In fact, most Programming Methodology graduates end up majoring outside of the School of Engineering. Prerequisites: The course requires no previous background in programming, but does require considerable dedication and hard work.

  17. Search

    Some assignments will require familiarity with basic Linux command line workflows. College Calculus and Linear … Course Deep Generative Models … first course in the AI Professional Program, you must complete a short application (15 min) to demonstrate: Proficiency in Python: Coding assignments will be in Python. Some assignments will ...

  18. CS106A

    CS106A provides extensive assistance for students. Section Leaders and Course Helpers are available from Sunday through Thursday evenings each week to help with assignments—we call this the LaIR. ... For most assignments, you must make an appointment with your section leader for an interactive-grading session. Your section leader will explain ...

  19. CS106A

    Life After CS106A. Jun 5th. 27. Review for Final. Assn 6 due. No Section. Jun 7th. Final Exam. A free, human-centered, intro-to-coding course from Stanford University.

  20. CS106A

    CS106A Challenge. 2021072213. One of the joys of programming is the ability to make something totally of your own creation. In CS106A this quarter we are hosting a Contest where you can program anything you like using the concepts and tools we learn in class. See the contest handout for more details.