Assignments. Expect assignments released Sunday night at midnight and due exactly one week later. Programs must operate correctly on the student server; they earn a score which is 50% correctness and 25% each timeliness and style. Source code or response text for each assignment must be submitted using the ~abrick/send program. Submissions and resubmissions after the assignment's due date cannot earn full timeliness credit, which diminishes linearly from 1 to 0 in the week after an assignment is due. No assignments at all are accepted after the due date of the semester's last assignment. If my systems or I are incapacitated or cannot receive student work, no lateness penalties will be assessed. Compare to "exercises".
Caveats.All dates, scores, and texts published on this site are provisional. Please inquire if you think there may be an error.
Contact.I am always available to students by email and at my office hours. I generally respond to messages within three working days. Make contact with me on LinkedIn when you pass one of my courses.
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 that can accomodate them. You are responsible for dropping yourself if you decide to leave the class.
Exams.Expect two comprehensive 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. Ranked-choice voting assesses project success for scores in project courses.
Exercises.Exercises are ungraded work which need not be turned in. Compare to "assignments".
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.
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. (If this does not work in your browser, one workaround is to read the page source.) A raw final score of 50% homework (hw) and 25% each exams (ex) and participation (ppn) is half-curved against those of all other enrollees; then the first quintile earns an A, the second a B, and so on.
Help.We all need help, all the time. Class forums (when in use) provide a space for rapid interchange of short messages between you and your colleagues. The Academic Computing Resource Center in Batmale Hall offers orientations and peer tutoring. Lastly, you may always come to the instructor's office hours for a conversation about the problem.
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.
Independent Study.I supervise some independent study projects. They have to be useful and serious to be worth our time. Propose your project to me in person so that we can discuss it.
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. There is always an optional evening orientation when the course begins.
Participation.Expect to participate by cooperating in work, asking questions, citing resources, and assisting your colleagues. Your participation in forums and classes alike will be assessed using secret, random participation tokens which you redeem using the ~abrick/send program. In-person classes may receive as many as one token per meeting; online classes as many as one token per week.
Philosophy.Computer Science is a technical field like architecture, in which a work's usefulness and beauty usually matter more to us than the techniques used to make it. Knowledge of those techniques does, however, enable us to address interesting art, business, and research questions. These problems can be solved by any programming language or on any operating system, using the same strategic principles.
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 the degree of fraudulence involved.
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 need to access the student Linux server hills.ccsf.edu using an ssh client. On Linux and Mac systems one is preinstalled with the name "ssh". On Windows you can try "PuTTy" and on Android, "ConnectBot"; any alternative is fine too. Your hills username is the same as your CCSF email name: up to eight characters long. Your initial password is based on your birthday and first and last initials, in the form jan0188.fl. Passwords will not be shown as you type them, and you will have to change the default right away.
- My Spring & Fall courses
- Web4 / WebSTARS
- WiFi Instructions
- Student email accounts
- Batmale 413 Linux machines
- Computer Usage Policy
- Computer Science department
- TechSF support programs at BAVC
- Disabled Students Programs & Services
- Academic Computing Resource Center
|8/15||Welcome (orientation 6:30 PM 8/23 at VART 115)||(exercise)||• Course Policies|
• Allen B. Downey's How to Think Like a Computer Scientist (2012 BY-NC)
|8/22||Server||(exercise)||• Kevin Heard's UNIX Tutorial 1-5|
|8/29||Programs||(exercise)||• Downey 1|
|9/5||Development||(assignment)||• Outspeaking's What is Programming|
• T.S. Nguyen's g++ Tutorial
|9/12||Output||(exercise)||• Downey 2|
|9/19||Arithmetic||(exercise)||• David Kieras's Formatting Numbers with C++ Output Streams|
|9/26||Numbers||(assignment)||• Downey 3|
|10/3||Pseudorandomness||(exercise)||• Alex's Random number generation|
|10/10||Conditionals||(assignment)||• Downey 4|
|10/17||Loops (midterm 6:30 PM 10/11 at VART 115)||(exercise)|
|10/24||Arrays||(assignment)||• Programiz's C++ Arrays|
|10/31||Functions||(exercise)||• Downey 5|
• Downey 6.6 to 6.11
|11/7||Strings||(exercise)||• Downey 7|
• Kurt McMahon's C strings and C++ strings
|11/21||Input||(exercise)||• Lucia Moura's Command Line Arguments in C++|
|11/28||File I/O||(exercise)||• Downey 15|
|12/5||Text Analysis||(assignment)||• What's the difference between college-level and corporate programming?|
|12/12||Final (6:30 PM 12/13 at VART 115)||(exercise)||• Joe Crumpton's C++ Reference Card|
|8/15||Welcome (orientation for online section: 7:45 PM 8/23 at VART 115)||(exercise)||• Course Policies|
• Allen B. Downey's Think Python: How to Think Like a Computer Scientist (2008 FDL)
|8/22||Server||(exercise)||• Kevin Heard's UNIX Tutorial 1-5|
|8/29||Interpreter||(assignment)||• Downey 1|
|9/5||Types||(exercise)||• Floating Point Arithmetic: Issues and Limitations|
|9/12||Math||(assignment)||• Downey 2|
|9/19||Containers I||(exercise)||• Downey 10|
• Downey 12
|9/26||Containers II||(exercise)||• Downey 3|
• Downey 11
|10/3||Flow||(assignment)||• Downey 5|
|10/10||Functions||(exercise)||• Downey 6|
|10/17||OOP (midterm for online section: 7:45 PM 10/11 at VART 115)||(exercise)||• Downey 18|
|10/31||File I/O||(exercise)||• Downey 14|
|11/7||Web service||(exercise)||• Marek Kubica's HOWTO Use Python in the Web|
|11/21||Regex||(exercise)||• A.M. Kuchling's Regular Expression HOWTO|
|12/12||Farewell (final for online section: 7:45 PM 12/13 at VART 115)||(exercise)|
- Machtelt Garrels's Bash Guide for Beginners (2008, LDPL)
- Gareth Anderson's GNU/Linux Command-Line Tools Summary (2006, FDL)
- GNU Bash Reference Manual (2014, FDL)
- Course Outline of Record and SLOs
|8/22||PEP||(exercise)||• Style Guide for Python Code|
|9/12||pdb & dis [kaptur]||(assignment)|
|10/10||PyPi & pip||(assignment)|
|10/17||Yield & generators||(exercise)|
|1/18||Orientation||(exercise)||• Course Policies|
|1/25||Web Sites||(exercise)||• Kevin Heard's UNIX Tutorial 1-5|
|2/1||Users||(exercise)||• Don Norman's Logic Versus Usage: The Case for Activity-Centered Design (2006)|
|2/8||Review Proposals||(assignment)||• Joel Spolsky's Painless Functional Specifications 1-4|
|5/9||Final team meetings||(exercise)|