Created by Kerem Goksel and Chris Piech
Even though we had an intense two week period where we covered a lot of fundamental topics in Computer Science, this is class is but a small portion of what there is to learn in this exciting field. The first stepping stone you have after being comfortable with the material of this course is to finish up the topics of CS 106A, the original introductory class at Stanford University this class is based on.
CS 106A is an intense 10-week class at Stanford, and it covers a few more topics than we did and has several other projects that we didn't have time to cover in this course. We made assigments that cover the concepts we skipped. For this, you should install the Stanford version of Eclipse on your own computers, as described in this installing Eclipse handout.
First, we made an assignment which reviews the concepts we covered in class. Download the starter code from the home page and complete the line.
As you know Strings are a type of variable that we use to store sequences of characters in computer's memory, and we generally used them throughout the course to keep track of things like informative messages, or scores to be displayed in games. However, there's a lot more to Strings than that! In fact, a lot of interesting problems in Computer Science involve working with Strings. While we haven't learned much about what you can do with Strings in this course, a great way to start learning is to build a project that requires you to work with Strings. The assignment all Stanford students do to learn Strings is to build the game of Hangman (“Adam asmaca” as the Turkish people call it). We went ahead and wrote a special hangman handout for you and added the starter code on the course website. You can go there, read the handout, download the code to your computer, import the project to Eclipse and start working on it immediately.
One final concept that you have to learn is HashMaps. See if you can review the concept of hashMaps, then try the Instakilo assignment.
Once you're done with CS 106A material, you can go on and explore any field of CS you want! You can move on to the material on CS106B, the second introductory course on the Stanford curriculum, but there are a myriad online resources that teach different CS concepts for free, so you can choose what you want to learn and learn at your own pace, from your own computers. We have created this handy guide for some of the good online courses that are appropriate for your level, but websites like Khan Academy, Codecademy, Udemy and Coursera have a lot of other courses you can follow as well, if you choose to go even deeper.
You covered some of the material in these courses, but taking them may be a good idea if you want to refresh and apply your knowledge before moving on
From now on, you will continue your journey of learning Computer Science on your own, but that doesn't mean there aren't resources for help! While we can't be there to check your code and teach you new concepts, you can use the class forum we created on Piazza to help out each other. You can find lecture notes of past CS106A classes here. If you need a comprehensive reference of all the methods we use, you can find the ACM documentation here and the general Java documentation here. Further on, after you are done with the remaining topics in CS106A and want to move on to new topics, a website called Stack Overflow will be your best friend. It is a question and answer website used by many programmers from around the world. If you have a problem, someone else likely had that problem before, and probably asked that question on Stack Overflow, just searching your problem on this website will likely give you ideas on how to approach a problem, just like suggestions from Section Leaders!
Seeing quality code written by experienced programmers can be very helpful in learning, as it will show you elegant and clever ways of solving problems and proper ways of formatting your code, so there's nothing wrong in looking at other people's code when you are learning on your own. However, as learning programming becomes your personal journey, keep in mind that this is something you are doing for yourself, because you love it! Copying someone else's code may give instant gratification by letting you solve a problem quickly, but it will harm your learning, and you won't get the satisfaction of creating a solution to a problem, which is one of the most beautiful moments of programming. There's no one out there to check if you copy others' code like at school, but remember that doing so just kills all the fun of programming.