CS106A: Programming Methodology To visit the website for fall quarter's CS106A offering, click here. Announcements Assignment 8 Out March 9, 2015 The final programming assignment of the quarter, Assignment 8 (FacePamphlet) goes out today. It's due on Tuesday, March 17 at 8:30AM (note the unusual due time of 8:30AM). This assignment asks you to design a program for maintaining a social network. You can create profiles, set status messages, and create friendships. Conceptually, there's not much new in this assignment from NameSurfer, and we hope that this assignment helps solidify your understanding of the course content and serves as a fitting capstone to your CS106A experience. After all - you'll have gone from zero to building your own social network in ten weeks! Second Midterm Room Assignments March 2, 2015 The second midterm exam locations are the same as the first! Rooms are assigned by last (family) names as follows: Abb - Jon: Go to Hewlett 200 Jun - Mari: Go to Hewlett 201 Marq - Mik: Go to Hewlett 101 Mil - Ogr: Go to Hewlett 102 Oke - Pat: Go to Hewlett 103 Pau - Tan: Go to Braun Auditorium Tao - Zuc: Go to 320-105 Good luck! Assignment 7 Out February 27, 2015 Assignment 7 (NameSurfer) goes out today. It's due on Monday, March 9 at 3:15PM. This assignment will give you a chance to play around with classes, interactors, HashMaps, inheritance, and the graphics system. We hope that you enjoy it! Practice Midterm Released February 26, 2015 In case you missed the practice exam tonight, we've released electronic copies of the practice second midterm and solutions. We recommend that you write out your answers on paper and then check them electronically. We've released a Java project with starter code for trying out the coding problems that you can use to help test out your answers. Hope this helps! Second Midterm Logistics February 24, 2015 The first midterm exam is coming up next Tuesday, March 3, from 7PM - 10PM. The exam is closed-book and closed-computer. You may, however, have one double-sided sheet of 8.5" × 11" paper with you when you take the exam. We'll be providing this Java and library reference handout during the exam. The exam covers material up through and including Wednesday's lecture on graphs and networks. The exam will primarily focus on the topics tested on Assignments 5 and 6 but will include at least one question on HashMaps. Interactors will not be tested. Due to the nature of the material in this course, the exam may indirectly test topics from earlier in the quarter (loops, methods, etc). We will be holding a practice exam on Thursday from 7PM - 10PM in Cubberly Auditorium. It's purely optional, but highly recommended as a way to get practice writing code on paper under exam conditions. We'll release the exam and solutions electronically this evening in case you're unable to make it. We are currently finalizing the exam locations, and we'll post room assignments later this week. Assignment 6 Sources Released February 19, 2015 If you are interested in adding extensions to Assignment 6 and would like to access the full source for the assignment starter code, you can download the full source using this link. For simplicity, we recommend only downloading these projects if you're adding in extensions; the default starter code is all you need for the base assignment. Midterms Graded February 18, 2015 The first midterm exam has been graded! If you haven't already picked up your exam, they're available for pickup right outside of Keith's office (Gates 178). You're welcome to stop by at your convenience. We've released a handout with statistics, solutions, and common mistakes that we hope will give you a better sense for your performance on the exam and how to improve going forward. If you believe that we've made any grading errors on your exam, you are welcome to submit a regrade request. To do so, please print out a copy of the regrade request form, fill it out, and staple it to the front of your exam. You can then hand it to either Keith or Alisha at their office hours or at lecture. All regrade requests must be received by 4:15PM on Wednesday, February 26. Assignment 6 Out February 18, 2015 Assignment 6 (Array Algorithms) goes out today and is due on Friday, February 27. In this assignment, you'll get to play around with arrays, image processing, and sound processing and will build up a much stronger intuition for how, when, where, and why to use arrays. We hope you have fun with this one! Midterm Room Assignments February 5, 2015 The first midterm will be spread across seven different testing locations, which are assigned by last (family) name as follows: Abb - Jon: Go to Hewlett 200 Jun - Mari: Go to Hewlett 201 Marq - Mik: Go to Hewlett 101 Mil - Ogr: Go to Hewlett 102 Oke - Pat: Go to Hewlett 103 Pau - Tan: Go to Braun Auditorium Tao - Zuc: Go to 320-105 Good luck! Midterm Logistics February 4, 2015 The first midterm exam is coming up next Tuesday, February 10, from 7PM - 10PM. The exam is closed-book and closed-computer. You may, however, have one double-sided sheet of 8.5" × 11" paper with you when you take the exam. We'll be providing this Karel and library documentation handout during the exam as a reference. The exam covers material up through and including today's (Wednesday's) lecture on strings and string processing. The focus of the exam will primarily be on the material explored on the first four programming assignments. We will be holding a practice exam tonight from 7PM - 10PM in Cemex Auditorium. It's purely optional, but highly recommended as a way to get practice writing code on paper under exam conditions. We'll release the exam and solutions electronically this evening in case you're unable to make it. We are currently finalizing the exam locations, and we'll post room assignments later this week. Assignment 4 Out February 2, 2015 Assignment 4 (Breakout!) goes out today and is due next Monday, February 9, at 3:15PM. In this classic CS106A assignment, you'll get a chance to combine the skills you developed in Assignments 2 and 3 with event processing to build your owen version of the classic arcade game. We hope that you have a lot of fun with this assignment! Good luck! Assignment 3 Out January 26, 2015 Assignment 3 (Problem-Solving in Java) goes out today and is due in one week (Monday, February 2). This assignment picks up where Assignment 2 leaves off and asks you to design a collection of smaller Java programs, some graphical, some text-based. We hope that you find these problems interesting and come away from this assignment with a firm grasp of loops, methods, variables, parameters, and return statements. Good luck! Assignment 2 Out January 16, 2015 Assignment 2 goes out today and is due on Monday, January 26 at 3:15PM. In this assignment, you'll explore new features of Java that weren't covered in Karel (graphics, variables, parameters, and constants) and will get a better command of how these tools work. As always, feel free to email your section leader, stop by office hours, or visit Alisha's and Keith's office hours if you have any questions. Good luck! Assignment 1 Out January 7, 2015 The first programming assignment of the quarter goes out today. It's due on Friday, January 16 at 3:15PM. In this assignment, you'll get your first practice programming Karel the Robot and will write your very first programs! We recommend that you try to complete the Collect Newspaper Karel problem as soon as possible so that you have time to iron out any Eclipse installation issues that might come up. From there, you'll then have a full week to complete the remaining three programming problems. Good luck! Welcome to CS106A! January 5, 2015 Welcome to CS106A! We've got an exciting quarter ahead of us and you're in for a real programming treat. Over the next ten weeks, we'll explore programming methodology, standard programming idioms and techniques, and applications of computer science across a variety of disciplines. It's going to be a lot of fun, and I hope that you're able to join us! In the meantime, feel free to check out the course information handout and syllabus to learn more about what this class is all about, the prerequisites, and the course policies. If you have any questions in the meantime, feel free to email me at htiek@cs.stanford.edu with questions. See you soon! Handouts 27: JAR Files 25S: Midterm 2 Solutions 25R: Midterm 2 Regrade Request Form 22: Practice Midterm 2 22S: Practice Midterm 2 Solns 18S: Midterm Solutions 18R: Regrade Request Form 15: Practice Midterm 15S: Practice Midterm Solutions 07: Submission Instructions 05: Using Karel in Eclipse 04: Downloading Eclipse 03: Honor Code Policies 02: Course Placement 01: Syllabus 00: Course Information Section Handouts Section Handout 8 (solutions) Section Handout 7 (solutions) Section Handout 6 (solutions) Section Handout 5 (solutions) Section Handout 4 (solutions) Section Handout 3 (solutions) Section Handout 2 (solutions) Section Handout 1 (solutions) Assignments Assignment 8: FacePamphlet Handout | Starter Files Assignment 7: NameSurfer Handout | Starter Files Assignment 6: Array Algorithms Handout | Starter Files Assignment 5: The Java String Quartet Handout | Starter Files Assignment 4: Breakout! Handout | Starter Files Assignment 3: Problem-Solving in Java Handout | Starter Files Assignment 2: Welcome to Java! Handout | Starter Files Assignment 1: Karel the Robot Handout | Starter Files Office Hours Keith (Gates 178) Thursday 1:00PM - 4:00PM Alisha (Gates 160) Tuesday 1:00PM - 4:00PM Wednesday 4:15PM - 5:15PM Resources Lecture Videos Download Eclipse Karel Reader Section Sign-Ups Blank Karel Project Blank Java Project ACM Docs Lectures 27: Where to Go from Here Slides 26: Your Questions Slides 25: Programming in the Real World Slides | Code 24: Passwords Slides 23: Networking Slides | Code 22: Machine Learning Slides | Code 21: Classes Slides | Code 20: Graphs and Networks Slides | Code | Data 19: HashMap Slides | Code 18: Interactors Slides | Code 17: Testing and Debugging Slides | Code 16: Multidimensional Arrays Slides | Code 15: Arrays Slides | Code 14: ArrayLists Slides | Code 13: File Processing Slides | Code 12: Strings Slides | Code 11: Objects and Parameters Slides | Code 10: Events Slides | Code 09: Animation Slides | Code 08: Randomness and Returns Slides | Code 07: Control Structures Revisited Slides | Code 06: Methods and Parameters Slides | Code 05: Control Structures Slides | Code 04: Graphics in Java Slides | Code 03: Intro to Java Slides | Code 02: Problem-Solving with Karel Slides | Code 01: Programming Karel Slides | Code 00: Introduction Slides | Code