CS61A: The Structure and Interpretation of Computer Programsという授業を取ってみた結果（IP）

「授業進めて気づいたことなどをどこかにまとめておけたら」と思いまとめページを作ることに。興味がある人は下記のリンクを参考に色々と調べてみてもいいかもしれないです。

#Resources
- [CS61A.org](cs61a.org)
- [Reading Assignment（講義前に終わらせておく）](http://composingprograms.com/)
- [Syllabus](http://cs61a.org/articles/about.html)
- [その他勉強に役立つリソース](http://cs61a.org/articles/resources.html)
- [過去問](https://www.ocf.berkeley.edu/~shidi/cs61a/wiki/Past_exams)
- [過去問#2](https://tbp.berkeley.edu/courses/cs/61A/)
- [Online Python Tutor](http://pythontutor.com/composingprograms.html#mode=edit)
- [2015年SPに行われた講義全て](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBM29DgZsGaQihJp8lLQn3J)

#個人的な進め方 (tentative)

授業に関する一般的なリソースなどはこのページに、個人的にわからないところや気になったところ、勉強に役立ったことが出てきたらその都度投稿していく。

#コース全体の進め方

詳細は[course info](http://cs61a.org/articles/about.html)と[ホームページ](cs61a.org)を参照。

##Course Overview

コースの概要だけ[course info](http://cs61a.org/articles/about.html)より簡単に引用しておきます。

>
_The CS 61 series is an introduction to computer science, with particular emphasis on software and on machines from a programmer's point of view. This first course concentrates mostly on the idea of abstraction, allowing the programmer to think in terms appropriate to the problem rather than in low-level operations dictated by the computer hardware. The next course, CS 61B, will deal with the more advanced engineering aspects of software, such as constructing and analyzing large programs. Finally, CS 61C concentrates on machines and how they carry out the programs you write._

>
_In CS 61A, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming. Mastery of a particular programming language is a very useful side effect of studying these general techniques. However, our hope is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days' work._

##Lec, Lab, Dis

通常の講義Lectureに加えてLabとdiscussionという3つのセクションに分かれており、週に1回ずつ各セクションに参加する。授業を取っている生徒数が数百人を超えているため、講義への参加は推奨されておらず、webcastでみれるようになっている。どうやら授業に登録している人は2016版を見れるようなのだが内容に大きな違いはないはずなので興味のある人は[2015年版](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBM29DgZsGaQihJp8lLQn3J)で構わないと思う。

##HW, Quizzes, Projects

この授業で課題として出される宿題は主に3種類ある。普通の宿題とクイズとプロジェクト。宿題とクイズはネット上で提出。プロジェクトは同じセクションにいる生徒とチームを組んで今まで授業で学んだことをベースに実際にアプリケーションを作る（らしい）。ちなみにプロジェクトは学期中に全部で4つ課題として出される。

##Exams

<a href="#授業を進めていく上で必須のサイトたち">上に貼ったリンク</a>を参考にテストの具合を見てもらったほうが早いかと。ちなみに具体的な日程はホームページの下の方にあるカレンダーを参考にすれば良い。Examsはファイナルを合わせて全部で3つ。

##Grading Policies

self-gradingをやりたい方のために一応載せておきます。

>
_Your course grade is computed using a point system with a total of 300 points, with the following distribution._
>
_Two midterms, each worth 50 points.
The final exam, worth 80 points.
Four projects, worth a total of 90 points.
Homework, quizzes, labs worth 30 points.
Midterms are held in the evenings and are two hours long to give you more time to complete them than lecture would allow. Exams are open book open note._
>
_Each letter grade for the course corresponds to a range of scores that will be published here shortly._
>
_Notice that this scale is nonlinear; the steps are wider in the B range. In a typical semester, about 75% of students receive A's and B's._
>
_This grading formula implies that there is no curve; your grade will depend only on how well you do, and not on how well everyone else does._
>
_Incomplete grades will be granted only for dire medical or personal emergencies that cause you to miss the final, and only if your work up to that point has been satisfactory._

#CS61Aに関する個人的な投稿

コースに関係する全ての個人的な疑問や思ったこと、気づいたことなどまとめ。

##WEEK0 (1/18/16 ~ 1/24/16)

- <a href="http://qiita.com/weedslayer/items/286f36d9ee35b3a2b388" target="_blank">Python Variable Scope (Global and Local), and its lifetime</a>
- <a href="http://qiita.com/weedslayer/items/1a4c5131ef88243f50ff" target="_blank">Pythonで出てくるSyntax ErrorとExceptionと簡易対応策をざっくり</a>
- <a href="http://qiita.com/weedslayer/items/30cdc4ef8da580e94593" target="_blank">difference between statements（文）and expressions（式）in Python</a>
- <a href="http://qiita.com/weedslayer/items/b15cd3d244352844ba94" target="_blank">エラーの分類 （python3.x)とDebuggingメモ</a>
- <a href="http://qiita.com/weedslayer/items/16075110aa172ef8b76a" target="_blank">python interactive mode、docstringを使ってみる</a>
- <a href="http://qiita.com/weedslayer/items/55fd63009c06f45b25d8" target="_blank">values and literals in terms of computer science</a>
- <a href="http://qiita.com/weedslayer/items/9ac165613bc896a1aaa1" target="_blank">impure functionとpure function</a>
- <a href="http://qiita.com/weedslayer/items/b8577aa1ed51bfb6b749" target="_blank">sshのきほんのき</a>

##__WEEK1 (1/25 ~ 1/31)__

- <a href="http://qiita.com/weedslayer/items/43156bdcc4b67ccb70c0" target="_blank">python3xでassert statement</a>
- <a href="http://qiita.com/weedslayer/items/c8d59b0a08673f8b50fe" target="_blank">Higher-Order Functions</a>