brick CS110A CS131A CS160B CS177 CS198
Instructor Aaron Brick, abrick@ccsf.edu
M.I.M.S., Berkeley, 2005; B.S., Johns Hopkins, 2000
Batmale 462, office hours M & W, 12 – 1
Personal web site: lithic.org
POLICIES.

Assignments.All assignments must be submitted using the ~abrick/submit program. Expect biweekly assignments due Sunday night at midnight; homework earns a score which is 50% correctness and 25% each timeliness and style. Submissions and resubmissions after the assignment's due date cannot earn full timeliness credit, which diminishes by one quarter each day an assignment is late. No assignments at all are accepted after the due date of the semester's last assignment.

Caveats.All dates and scores published on this site are provisional. Please inquire if you think there may be an error.

Contact.I am always available to you by email and at my office hours. I generally respond to messages within three working days. Online classes are most suited to self-starters. If my systems or I are incapacitated or cannot receive student work, no lateness penalties will be assessed.

Enrollment.I offer add codes at my office to any students, wait listed or not, who need one during the first two weeks of a course. After enrolling in one of my classes, you must click the “census form” link and input your SID one time. You are responsible for dropping yourself if you decide to leave the class.

Exams.Expect two exams per semester, each one hour in duration and consisting of five conceptual and technical problems. Books, notes, and computers are permitted. You will not be asked to compose complete programs. Students in my online classes must attend on-campus exams proctored by the instructor. Prepare for exams by reviewing the assigned reading. Late exams will not be given, so alternative scheduling arrangements must be made in advance. You can review your exam at my office hours or receive a copy of it in the mail by turning it in with a self-addressed stamped envelope. Scores in project-oriented classes are calculated by ranked-choice voting, assessing the projects' degree of success, instead.

Extra Credit.To earn extra credit, catch up on your homework assignments and propose to me an interesting and/or useful project you want to pursue. I also have a stock of interesting, useful, non-credit projects for advanced students looking to build their résumés.

In-person classes.Studying in person, on campus, means having more personal interaction and interchange with your peers and instructor. This context is conducive to making friends and asking questions.

Grades.Your current grades and detailed comments on your work will be published on this web page through the semester. Mouse over an italicized score to see details pop up in a tooltip. A raw final score of 50% homework (hw) and 25% each exams (ex) and participation (ppn) is curved against those of all other enrollees; the first quintile earns an A, the second a B, and so on.

Online classes.Online study is a learning experience suited for self-starters and remote learners. While doing the same readings and assignments as your peers in an in-person class, you will be expected to communicate with peers and instructor at least weekly in a message forum, and to attend two evening exams on campus per semester.

Participation.Expect to participate by cooperating in work, asking questions, citing resources, and assisting your colleagues. Your forum posts will be visible to the public; you may create a throwaway email address to post anonymously, and if you do so, use the last four digits of your SID in the address so that I can recognize you. Your participation in forums and classes alike will be assessed using secret, random participation tokens disclosed in those contexts, which you must redeem using the ~abrick/redeem program. In project classes, participation scores will be calculated at semester's end by ranked-choice voting within each team.

Philosophy.Computer Science is a technical field, but technique is not its main characteristic. Despite their different aesthetic properties, all programming languages can be used to solve the same problems. We study these problems in order to identify potential solutions, which requires making explicit assumptions, separating problems into their constituent parts, and designing systems that can address them. The essence and the concerns of software engineering practice are independent of which languages are involved, so expect a holistic focus on these wider issues in all of my classes.

Plagiarism.All students must do their own work. If you turn in plagiarized work, be prepared to receive a zero or negative credit, depending on how fraudulent it is.

Programming Style.Learning to program requires learning good style. A program earning a low style score might exhibit compilation or runtime errors; lack sufficient comments in the source code; violate norms of indentation or name capitalization; or contain redundant, copy-and-pasted code. A program earning a high score will throw no errors, have copious comments, good indentation and capitalization, and be concise.

Server and Login.You will use the student Linux server hills.ccsf.edu; your initial password will consist of your birthdate and first & last initials in mmmddyy.ii form; e.g., the password of someone named X.Y.Z. who was born on 1/1/1988 would be jan0188.xz. Your password will not be shown as you type it, and you will have to change your password upon your first login. A simple editor you can use is nano; a more powerful and difficult one is vim. Alternately, load the file over the network from another machine and test to ensure it works on hills.