-
Notifications
You must be signed in to change notification settings - Fork 12
/
about.html
394 lines (301 loc) · 18.9 KB
/
about.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
<html>
<head>
<title>61A Information</title>
<link href="61a_about.css" rel="stylesheet" type="text/css">
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-34495187-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<h2 class="header">61A Course Information and Policies</h2>
Course website:
<a href="http://www-inst.eecs.berkeley.edu/~cs61a/sp14/">
http://www-inst.eecs.berkeley.edu/~cs61a/sp14/
</a>
<h3 class="section">Course Description</h3>
<p>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.</p>
<p>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.</p>
<p>There is also a self-paced version of this course, <a
href="61as.html">61AS</a>, which fulfills the same requirements.
<h3 class="section">Programming Language</h3>
<p>61A uses the Python 3 programming language. Python is a popular language in
both industry and academia. It is also particularly well-suited to the task of
exploring the topics taught in this course. It is an open-source language
developed by a large volunteer community that prides itself on the diversity of
its contributors. </p>
<p>In previous semesters, this course was taught using the Scheme language, a
dialect of Lisp, which is the oldest programming language that is still
recruiting new users today. Lisp and Python are similar in many ways. In fact,
Lisp popularized many of the features that make Python a great language. Our
choice to change languages is primarily motivated by the strength of Python's
programming community, which you will soon join as you learn the language.
Python also has excellent library support for a vast range of application areas.
Knowing Python will help you pursue your future programming interests, wherever
they may lead you.</p>
<h3 class="section">Prerequisites</h3>
<p>Math 1A is a corequisite for 61A. (That is, it may be taken
concurrently.)</p>
<p>There is no formal programming-related prerequisites for admission to 61A.
However, most 61A students have had significant prior programming experience.
There is no need for you to be familiar with any particular programming
language. If you have taken the CS Advanced Placement AB course in C++ or Java,
you are certainly ready for 61A.</p>
<p>If you don't feel ready for 61A, we recommend that you take <a
href="http://inst.eecs.berkeley.edu/~cs10/">CS 10 : The Beauty and Joy of
Computing</a>, which is an introduction to computer science for non-majors
(and majors needing more programming experience). The course will teach students
how to program using BYOB (based on Scratch), one of the friendliest programming
languages ever invented. It's purely graphical, which means programming involves
simply dragging blocks around, and building bigger blocks out of smaller blocks.
But the course is far more than just learning to program! You'll learn some of
the "Big Ideas" of computing, such as abstraction, design, recursion,
concurrency, simulations, and the limits of computation. You'll also see some
beautiful applications of computing that have changed the world, as well as talk
about the history of computing and where it will go in the future.</p>
<p>Non-technical students (for instance, ones who prefer Math 16A to Math 1A)
should probably avoid CS 61A entirely, and should take CS 10 to satisfy their
need for or interest in a programming course.</p>
<p>If you are not strongly interested in computer programming at all, but
instead want to learn how to use computers as a tool, you should consider IDS
110, a course that presents a variety of personal computer software along with a
brief introduction to programming. </p>
<p>If you have substantial prior programming background, you may feel that you
can skip 61A. In most cases we don't recommend that. Although 61A is the first
course in the CS sequence, it's quite different from most introductory courses.
You won't be bored in 61A. Perhaps your prior experience will allow you to skip
61B or 61C, which are more comparable to courses taught elsewhere.
<h3 class="section">Course Materials</h3>
<p>There is no required textbook for this course. Our primary text will be a
series of lecture notes based on the classic book, <a
href="http://mitpress.mit.edu/sicp/full-text/book/book.html">Structure and
Interpretation of Computer Programs</a>, which has been the textbook for 61A
for many years. Lecture notes will be posted to the course website. </p>
<h3 class="section">Lab and Discussion Sections</h3>
<p>In addition to the lectures Monday, Wednesday, and Friday, the course
consists of one discussion section and one laboratory section each week. (During
the first full week, you will have two labs and no sections.)
<p>The discussion sections are run by an amazing group of Teaching Assistants;
each TA will handle enrollment for his or her sections. This course is
currently full, so please attend your assigned section.
<p>Make sure that you are in a definite section by next week, because the course
projects are done in pairs. We strongly encourage you to find a partner in your
own section. Your TA will help you.
<p>You are expected to attend all class meetings, including lectures, sections,
and labs. We do not track attendance at any class meetings, but we do assign
points for participation at the end of the term (see grading).
<p><b>Enrollment:</b> Your TA does not have any power over enrollment
whatsoever. Admission to the class is controlled by the EECS department.
<h3 class="section">Computer Accounts</h3>
<p><i>You must</i> have a computer account on the 61A course facility. To set up
an account, you need an account form, which you will receive in the first lab.
<p>You must set up your account in the first week because that is how we know
who is really in the class. If you are pre-enrolled but do not set up your
account this week, you may be dropped from the course! Account forms will be
distributed in lab and office hours this week. The first time you log in, you
will be asked to type in your name and reg card number, if you have one.
<em>Please follow the instructions carefully.</em> You must get your account and
log into it no later than 4pm on the second Friday of class so that we have an
accurate class count.
<p>If you plan to use your personal computer for the course projects, you must
get a class account, even if you intend never to use it. Class accounts are
required for submitting assignments.
<p>If you are not pre-enrolled and want to take 61A, you have to add the course
using Tele-BEARS. If you are something other than a regular Berkeley
undergraduate, then you probably need a signature on a form admitting you to the
course: contact the instructor directly.
<h3 class="section">Ask Questions!</h3>
<p>Your first and most important resource for help in learning the material in
this course is your fellow students. Work closely with your project partner. You
are responsible for helping each other learn.
<p>If you have questions that others might have as well, regarding projects,
homeworks, course policies, etc., post your questions to <a
href="http://www.piazza.com/class">Piazza</a>, the course messaging
service. Piazza allows you to answer questions from other students. Your
contributions (questions and answers) to this online forum will also contribute
to your participation score in the course.
<p>The class will have a staff of undergraduate Lab Assistants (LAs). Each LA
will have scheduled hours to be in the lab. Whenever an LA is in the lab
you may request that s/he answer questions about the homework or programs (but
not do them for you).
<p>The instructor and the Teaching Assistants who teach the discussion sections
are also available to answer questions. You may drop in during office hours, make
appointments for other times, or email us.
<h3 class="section">Computer Resources</h3>
<p>The computing laboratories in 271, 273, and 275 Soda are our primary lab
rooms, although the CS 61A accounts can also be used from any EECS Instructional
lab in Soda or Cory Hall. The lab is normally available for use at all times,
but you need a card key for evening access to the lab.
<p><b>Current UCB students:</b> If you are enrolled in the course, your Cal
student ID serves as your card key and will automatically be activated for
access to the Soda second floor labs (including entering the building). You do
not have to do anything, unless for some reason it doesn't work, then see below.
<p><b>Concurrent/other students</b>: You can fill out an application and obtain a
white card key from 387 Soda Hall (the front desk). There is a small fee for
access.
<p>During scheduled lab sessions, only students enrolled in that particular
section may be in the lab. At other hours, any 61A student may use the lab on a
drop-in basis. (The labs on the second floor of Soda Hall are unlocked during
daytime hours.)
<p>Be respectful of the lab space. Please don't steal the chairs, or bring in
food or drinks. Don't unplug anything; unplugged computers make our hard-working
instructional computing team very sad. Don't monopolize a workstation for six
hours during prime time to play games. If you see someone disrupting the space,
ask them to stop.
<p>You have a homework assignment in the first week that requires you to work on
the computer; part of the purpose of the assignment is to ensure that you know
how to create, edit, and print files. Pick up your computer account this week,
whether or not you are pre-enrolled.
<h3 class="section">Projects and Homeworks</h3>
<p>Each week there will be problems assigned for you to work on, most of which will
involve writing and debugging programs. These assignments come in three categories:
<ul>
<li><b>Laboratory exercises</b> are short, relatively simple exercises
designed to introduce a new topic. You'll do these during the scheduled lab
meetings.
<li><b>Homework assignments</b> are slightly more involved versions of lab
exercises, meant to illustrate and explore new topics. Homeworks are
generally assigned on Fridays and due the following Friday at 5pm. You are
encouraged to discuss the homework with other students, but your final
solution should be developed either alone or with one partner.
<li><b>Projects</b> are larger assignments intended to teach you how to
combine ideas from the course in interesting ways. There are four
projects during the semester. You are encouraged to complete projects in
pairs; your partner should be another student in your section.
</ul>
<p>The purpose of the homework is for you to learn the course material, not to
prove that you already know it. Therefore, the weekly homeworks are not graded
on the correctness of your solutions, but on effort. You will get full credit
for an entirely wrong answer that shows reasonable effort! Homeworks will be
graded automatically.
<p>Each homework is worth two points for a reasonable effort, zero points for a
missing homework or one that seems to show no effort, or negative ten (-10)
points for a solution copied from someone else.
<p>The four programming projects are graded on the correctness and clarity of
your solutions. If you work with a partner (which you should), work together to
ensure that both group members understand the complete program you create.
<p>Projects and homeworks will be submitted online. Through a web-based code
review system, you will receive detailed feedback on your projects.
<h3 class="section">Tests and Grading</h3>
<p>Your course grade is computed using a point system with a total of 300
points, with the following distribution.
<ul>
<li>Two midterms, each worth 50 points.
<li>One final exam, worth 80 points.
<li>Four projects, worth a total of 90 points
<li>Homework, quizzes, and participation, worth a total of 30 points
</ul>
<p>Midterms are held in the evenings to give you more time to
complete them than lecture would allow. Exams are open book, open notes.
<!--<p>Midterms are held in the evenings from 7pm-9pm to give you more time to
complete them than lecture would allow. You will be allowed to bring a fixed
number of pages of notes to each exam. Details of this policy will be released
as the exam approaches.-->
<!-- FIXME
<p><b>Midterms will be held on Monday 9/23 and 10/28</b>! If you are
not available from 7pm to 9pm on those days, notify your TA immediately. -->
<p>Each letter grade for the course corresponds to a range of scores:
<pre>
A+ 290+ A 278-289 A- 271-277
B+ 253-270 B 237-252 B- 221-236
C+ 214-220 C 207-213 C- 200-206
D+ 190-199 D 180-189 D- 170-179
</pre>
<p>Notice that this scale is nonlinear; the steps are wider in the B range.
<p>This grading formula implies that <i>there is no curve</i>; your grade
will depend only on how well you do, and not on how well everyone else
does.
<p>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.
<a name="recover"></a> <p><b>Midterm Recovery Policy</b>
On the final exam, you can earn back a fraction of the points you
lost on the midterms. If X is the sum of your midterm 1 and midterm 2 scores,
you will earn back up to 75% of max(0, 60-X). The fraction you earn back is
based on your final score Y and is computed as min(45, Y-20)/60.
<p>For example, if the sum of your midterm scores is 30/100 and your final score
is 40/80, then you earn back 20/60=33.3% of 60-30=30 points, giving you an extra
10 points. Assuming a full score on projects and homework (e.g., 120/120 non-
exam points), you will earn a C-.
<h3 class="section">Learning Cooperatively</h3>
<p>With the obvious exception of exams, we encourage you to discuss <i>all</i>
of the course activities with your friends and classmates as you are working on
them. You will definitely learn more in this class if you work with others than
if you do not. Ask questions, answer questions, and share ideas liberally.
<p>To encourage participation, you will receive a small number of points for
Effort, Participation and Altruism. This grade will not be given until the
semester is over, and is a confidential value determined by the course staff.
Effort is a measure of how hard you "try". E.g., Do you come to lab? Do you
attend review sessions? Do you come to office hours? Do you keep up with the lab
activities (whether or not you get them right)? Participation measures whether
you speak up in lab and lecture and help make the class dynamic and interactive.
Do you contribute to the community of the class? Online participation certainly
counts. Altruism measures how much you help your fellow students learn. One of
the best ways to learn is to teach someone else.
<p>Since you're working collaboratively, keep your project partner and TA
informed. If some medical or personal emergency takes you away from the course
for an extended period, or if you decide to drop the course for any reason,
please don't just disappear silently! You should inform your project partner
and your TA, so that nobody is depending on you to do something you can't
finish.
<h3 class="section">Academic Honesty</h3>
<p>Cooperation has a limit, however, and in 61A that limit is code. Homework
problems should be completed and turned in individually. Feel free to discuss
the problems with others beforehand; just submit your own work in the end.
Projects are to be completed in pairs, but you may discuss them more broadly
than with your partner. However, you <i>should not</i> be sharing lines of code
with others or reading code from other people's projects. Write your own
programs and keep them to yourself.
<p>I expect you to hand in your own work, take your own tests, and complete your
own projects. The assignments and evaluations are structured to help you learn,
which is why you're in College. The course staff works hard to put together this
course, and we ask in return that you respect the integrity of the course by not
misrepresenting your work.
<p>The EECS Department Policy on Academic Dishonesty says, "Copying all or part
of another person's work, or using reference materials not specifically allowed,
are forms of cheating and will not be tolerated." The policy statement goes on
to explain the penalties for cheating, which range from a zero grade for the
test up to dismissal from the University, for a second offense.
<p>Rather than copying someone else's work, ask for help. You are not alone in
this course! The TAs, lab assistants, and instructor are all here to help you
succeed. If you invest the time to learn the material and complete the
projects, you won't need to copy any answers.
<a name="early"></a>
<h3 class="section">Early Policy</h3>
<p>On each project, you can earn an additional bonus point by submitting the
project at least 24 hours before the deadline. You can earn one additional
point over the semester by submitting at least half of your homework assignments
at least 24 hours before their respective deadlines.
<h3 class="section">Late Policy</h3>
<p>If you cannot turn in an assignment on time, contact your TA and partner as
early as possible. Late project submission requires approval by your
TA. Typically, projects will be accepted up to 24 hours after the deadline, but
late projects will only receive 2/3 of the earned score. No credit will be given
for late homework, or for projects turned in more than one day late. Exceptions
may be made for <em>extraordinary</em> circumstances.
<h3 class="section">A Parting Thought</h3>
<p>This document shouldn't end with a list of late penalties, because penalties
and grades aren't the purpose of the course. We actually just want you to learn.
We're very excited to have such a large and enthusiastic group of students this
semester. We want all of you to be successful here. Welcome to 61A.