DOC PREVIEW
Berkeley COMPSCI 164 - General Course Information

This preview shows page 1 out of 4 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 4 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 4 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

UNIVERSITY OF CALIFORNIADepartment of Electrical Engineeringand Computer SciencesComputer Science DivisionCS 164 P. N. HilfingerSpring 2005CS 164: Programming Languages and CompilersHandout 0: General Course InformationPersonnelInstructor: Paul N. Hilfinger, 787 Soda (Hilfinger@CS, cs164@cs)Teaching Assistants: Johnathon Jamison and Paul HaleInformation: See URL http://www -inst.eecs.berkeley.edu/~cs164 (theclass home page).Purpose of this CourseCS164 is an introduction to the design of programming languages and the implementationof translators for them. In the process, we’ll do some general exploration of programminglanguage design and its implications for implementation, and lo ok at a dialect of at least oneparticular language, which this semester is Python.One goal of this course is to explore the structure of p rogramming languages and toconsider alternatives to familiar programming language features. We’ll also study the problemof translating pr ogramming languages into machine-executable forms, using Python as aconcrete example of a language to be translated, and the assembly language of the Intel ia32family (u sed in PCs and some of our Solaris workstations downstairs) as a concrete exampleof a target machine. We study language translation fir s t to learn some of techniques used thatare useful for many programming problems outside of language translation, second to gain abetter intuitive feel for the tools we use when programming and the costs of the programs wewrite, and third (possibly most important) to gain experience with the engineering problemsassociated with building and validating a substantial piece of software.Prerequisites and AdmissionPlease do not take this course unless you have the prerequisites: CS61B and CS61C, orequivalent courses (at a junior college, for example). You should be familiar w ith Java orC++. You need not be familiar with Python.1General Course Information 2Reference MaterialThere is no required textbook for this course, since none is altogether satisfactory. Officially,we’ll rely on notes that I provide (on paper and on the web), but many people feel morecomfortable if they can supplement this information with other treatments. I have put three“recommended” books on reserve at the Engineering Library for your perusal:• Compilers: Principles, Techniques, and Tools by Aho, Sethi, and Ullman—also knownas “The Red Dragon Book”• Modern Compiler Design by Grune, Bal, Jacobs, and Lagendoen.• Engineering a Compiler by Cooper and Torczon.Take a look at them, and if you think one might be helpful, you can get it from the bookstore(either on campus or on-line).For inf ormation on Python, there is the book Python Essential Reference (2nd edition),by David M. Beazley. This covers Python version 2.1—not the most recent version, but wewill restrict ourselves to some sub set of these features. All of the information in this book isavailable in web pages on-line; we will have a link from the class home page.You will be able to purchase any additional course documentation and notes at Copy-Central on Hearst as these documents become available (please don’t go trying to buy thembefore I tell you they are ready).Course WorkThe major work in the course consists of buildin g a system to translate programs writtenin Python. The system will be divided into modules, with each module constituting anassignment. The implementation language is C ++ or Java. I n addition to the project, therewill be a midterm, a final examination, and some ordinary w ritten homework.Collabor ationYou m ay work on the various modules individually or in pairs. I encourage you to work inpairs. Collaborating with someone often encourages more attention to your p rogrammingtechnique and gives you practice in one of the “real-world” social aspects of computing thatuniversity cours es must generally ignore. As an extra bonus, working in pairs substantiallyreduces the strain on our computing resources. Each pair w ill submit one module and eachmember of the pair will receive the same grade for that module. The exams may containquestions about the m odules, so it is extremely unwise to allow your partner to do all thework. Although the Staff (elsewhere known as “we”) will be h appy to give advice, it is theresponsibility of partnerships to work out their own disputes. Partnerships apply only tothe pr oject assignments, not to tests or other written homework. Students taking the coursePass/Fail may not take graded students as partners. Groups of more than two people willnot be allowed except under certain unusual circumstances.I encourage collaboration among groups, as long as it is restricted to questions of strategyas opposed to actual program text. Each partnership or individual is responsible f or making itGeneral Course Information 3clear that their work is really theirs. Except for general-purpose utilities (e.g., a doubly-linkedlist package) you should not generally borrow other people’s code. For anything you do borrow(including ideas) you must give proper credit in comments. Naturally, over-dependence onothers’ ideas will adversely affect your grade on a module, but failure to give credit wherecredit is du e falls under the heading of “cheating.”Cheating (also known as plagiarism) is the presentation of someone else’s work as yourown. It will not be tolerated. Violators will fail the course and will be reported to theappropriate disciplinary agency. It is not possible for only one member of a partnership tocheat on a pr oject assignment; any transgressions on your part will reflect equally on yourpartner.GradingIn an attempt to cut down on cutthroat competitiveness and to make your grade a bit moremeaningful, I use an absolute grading scale. Your letter grade will be d etermined by the totalnumber of points on all assignments: A for 170–200 points, B for 140–170, C for 110–140, andD for 80–110, with plusses and minuses awarded to the top and bottom third of each grade.These divisions are based on past classes’ performances. Out of the total 200 points, thefinal counts for 65, the midterm for 35, and other w ritten homework and project assignmentstotal 100.Ordinary homework doesn’t get many points, because I see it mostly as a chance forexercise. You will be given full credit for hand ing in a solution in which you demonstrate thatyou have made a substantial effort on each pr ob lem. Since solutions will be available afterthe


View Full Document

Berkeley COMPSCI 164 - General Course Information

Documents in this Course
Lecture 8

Lecture 8

40 pages

Load more
Download General Course Information
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view General Course Information and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view General Course Information 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?