CSE 130 is a survey of the main features, fundamental concepts, and similarities and differences of the most important modern programming languages. The principal languages considered are C, Java, Pascal, Ada, awk, and ML, but the focus is on programming languages in general, not on the details of specific languages.
CSE 130 is open to CSE majors only. The Fall 1999 offering (section id 349174) has reached its maximum enrollment, but the course will be offered again in Spring 2000 and possibly in Winter 2000.
The instructor will sign "add cards" only for students who absolutely need to take CSE 130 in order to graduate in December 1999 or March 2000. Any student in this situation must show proof, i.e. a "degree check" form and a transcript.
See here for
the Winter 2001 version of CSE 130, taught by Dr. Bertram Ludascher.
Here is the second team project assignment, and notes explaining iterative deepening. The assignment is due on Friday November 5. Assignments submitted on Monday November 7 will lose 10% of the maximum available, and each extra day late will lose another 5%.
Here is the third team project assignment. The due date for this assignment has been extended to Monday, November 22. The fourth project will be distributed on that day, and due on Wednesday, December 8, which is the day of the final lecture.
Here is the fourth team project assignment.
The final examination will be on Monday, December 13, from 7pm to 10. Here are the midterm sample questions in Postscript.
Here are sample
answers for the midterm,
which was on Wednesday November 10. (To display these documents,
you will need
for Unix or GSview
for Windows.) Here are the guidelines
used for grading.
|Name||Telephone||Office Hours||Office Location|
|Charles Elkan||elkan@cs||534-8897||Mon, Wed 4pm to 5pm||AP&M 4856|
|Renata Teixeira||teixeira@cs||Mon 9am to 10am
Fri 5pm to 6pm
|Maki Sugimoto||sugimoto@cs||Tue 5pm to 6pm
Wed 2pm to 3pm
|Mark A. Smith||masmith@cs||Thursday 6pm to 7pm||AP&M 3349D|
If you are unable to attend office hours, feel free to send email to arrange an appointment. Office hours will begin on Tuesday, October 5.
There is a web-based bulletin
board for questions that would be of interest to other students also.
|October 4||Programming language design objectives and history.|
|October 6||Types: primitive, enumeration, composite, Cartesian products, mappings.|
|October 11||Guidelines for writing reports; arrays and functions viewed as mappings.|
|October 13||Functions as first-class values; tagged union and recursive types; intro to ML.|
|October 18||Higher-order functions in ML, and mappings, unions and recursive types; abstract syntax.|
|October 20||Abstract syntax implemented in ML; uses of abstract syntax; expressions versus commands.|
|October 25||Syntax for declarations, imperative versus functional PLs, bindings and environments.|
|October 27||Nested block-structured scoping, static versus dynamic scoping.|
|November 1||Disadvantages of dynamic scoping; variable lifetimes, persistent and static variables.|
|November 3||Abstract data types: signatures, specifications, implementations, information-hiding, packages.|
|November 8||Uses of updatable variables; objects, methods, and classes; inheritance and dynamic binding.|
|November 15||Object identity; method overloading and dispatching; objects as higher-order functions; design criteria for exception-handling.|
|November 17||Exceptions in Ada; masking errors vs revealing them; static vs dynamic type-checking, type equivalence.|
|November 19||On growing a PL by Guy Steele; requirements analysis; name vs structural type-equivalence.|
|November 22||Scripting languages in general and awk in particular.|
|November 29||Expressions: function-calling, evaluation order for subexpressions, conditional expressions.|
|December 1||Formal parameters versus actual argument expressions; call-by-value(-result), call by reference.|
|December 6||Call-by-macro: definition and simulation by higher-order functions; threads, processes, Ada tasks.|
|December 8||Tasks and entries in Ada, task types, lower-level and higher-level parallel programming.|
Both textbooks are "recommended" only, so purchasing them is not required. However, you should be sure that you have easy access to both books throughout the course. Do not rely on borrowing them from the library. At a minimum, each project team of three students should possess at least one copy of each book.
The "required" text for CSE 130 is the instructor's online lecture notes. To allow you to read ahead, here are full lecture notes from Spring 1998. This quarter's lecture notes will be similar, but some material will be changed and some will be added. Quite a few of the topics discussed in class will not be in either textbook, or will be explained differently. Coming to lectures and taking notes carefully is important.
As the quarter progresses, it is your responsibility to locate relevant
chapters of the textbooks and to study them. Use the indexes of the
books! Examinations will be based mainly on the online lecture notes,
but may ask questions that involve knowledge in the textbooks.
Two section meetings are scheduled each week, one on Mondays and one on Fridays. The Monday meeting is from 3:35pm to 4:25pm in Center Hall, room 212. The Friday meeting is from 10:10am to 11am in Peterson Hall, room 103.
The first section meeting will be on Friday October 8. Attendance at one of the two weekly section meetings is required. The same material will be covered each Friday and the following Monday. Therefore, if you miss a Friday meeting, you should attend the next Monday meeting.
The lecture on the Wednesday before Thanksgiving (November 24) has been rescheduled to the previous Friday (November 19), in the usual room (Center Hall 113) and at the usual time (6:50pm). The last day of classes will be Wednesday, December 8.
There will be one midterm examination, on Wednesday November 10. The final examination has been scheduled by the UCSD registrar on Monday, December 13, from 7pm to 10pm.
There will be four two-week team project assignments, which will be
due on Fridays. The due dates will be October 22, November 5, November
19, and December 3. The first three project reports will be returned
on Mondays, on November 1, November 15, November 29. This schedule
means that you will have time to learn from each graded project report
before the next one is due.
The midterm will count for 1/6 of your overall grade and the final for 1/3. Each team project will count for 1/8 of your overall grade. Your grade will therefore be based 1/2 on your individual work, as reflected in the exams, and 1/2 on your teamwork, as reflected in the project reports.
Grading will not be based on arbitrary numerical standards, nor will there be a fixed "curve." There is no fixed correspondence between letter grades and numerical scores on the assignments or on the exams. You can evaluate your performance in the class by comparing your scores with the means and standard deviations, which will be announced. However there is also no fixed correspondence between letter grades and standard deviations above or below the mean. If all students do well in the absolute and compared to previous years, then all students will get a good grade.
You should not drop CSE 130 just because you are unhappy with the score that you receive on the midterm or on a project assignment. Instead, you should make an appointment to discuss with the instructor or with a TA how you can do better on the final and on following projects.
The description of each team project will be distributed in class on a Wednesday. Project reports will be due on the Friday that is two weeks and two days later, before 6pm. Projects will be graded out of 20 points. Reports submitted on the Monday after the due date will lose five points. Each extra day late will lose another two points.
One person from each team should give the team's complete project report
to Renata Teixeira during her Friday office hour, between 5pm and 6pm in
AP&M room 3349D. Late reports should be given to Ms. Cheyenne
Gringeri-Brown in APM room 3151 during standard business hours.
For each project you must be part of a team of exactly three students. Each team must hand in a single project report. For each project, the three members of a team will all receive the same score. It is your responsibility to find good project partners. You may stay with the same team for all projects, or switch after one project and before the next. You may not switch halfway through a project.
Part of the purpose of the team projects is to help you develop your ability to work well with other people. To help you learn from each project, each team should staple a single copy of this team self-evaluation form to each project report. Your team should discuss the questions on this form before starting each project. At the end of each project, you should write consensus answers to the questions on the form.
The first assignment will use C and Pascal, the second will use C and ML, the third will use C++ and Ada, and the last will use Java and awk. It is your responsibility to learn the details of how to use these languages for the assignments. We will discuss the most important features and differences of these languages in class, and there will be introductory handouts.
UCSD labs with Unix workstations are available for you to use, in particular the uAPE lab in AP&M room B402. All software for CSE 130 will be installed on the ieng9 Sun server. You may do the assignments using other computers, but you should make sure that your programs compile and execute correctly on ieng9. We will use some version of the turnin utility to check that your programs are correct. There will be future instructions on this.
The UCSD Unix labs are overcrowded. You are encouraged to install
Linux or some other free version of Unix on a home computer and to use
that for most of your software development. Note that Linux runs
well even on the oldest 75 MHz Pentium personal computer, and that you
can have Linux and Windows on the same computer, so you do not need to
buy a new computer in order to have Unix at home. For help installing
Linux, go to the Linux setup
day organized by the UCSD student chapter of ACM, which is on Saturday
October 9 at 11am in AP&M room 4301.
Transcripts should show sample inputs and the corresponding correct outputs produced by your programs. Under Unix, the tee command is useful for producing transcripts.
Your report and its appendices should be printed on standard 8.5 inch
by 11 inch paper using a laser printer or a high-quality inkjet printer.
You should use text processing software such as Microsoft Word, which is
available on UCSD Macintosh computers for free student use. Each
report and its appendices should be stapled together securely. Reports
assembled with paper clips or other insecure bindings will be rejected.
Do not use any plastic or cardboard binders or sleeves.
Use diagrams, charts, and tables when useful. Always provide labels and legends.
Follow all the rules of good writing explained by Strunk and White (see below).
If you refer to sources such as the textbooks for the course, do not just give a general bibliography. Instead, cite the sources you use in the body of your report at each location where a source is relevant. Give full bibliographic information in a "List of References" at the end of the report, not in footnotes.
The main part of a report should not include raw printouts.
Instead, each report should have two appendices, which are not counted
in the ten-page length limit. The first appendix should be a printout
of the programs written by your team for the assignment (i.e. listings),
and the second appendix should be a printout of sample executions of your
programs (i.e. a transcript).
"The Writing Center offers the UCSD community FREE one-to-one conferences on any kind of writing project ... Various workshops are offered, including ... essay writing ... The OASIS writing test assesses your strengths and weaknesses in writing and editing academic papers. ... Individual tutorial services are available to students whose first language is not English."The OASIS Writing Center is located in Center Hall. Call 534-3760 to make an appointment.
The following report contains everything that a computer scientist needs to know about technical writing. Although the report is protected by copyright law, it is available for viewing on the web.
Technical Writing for Computer Engineers and Computer Scientists by Kevin Karplus and Dan Scripture.
From the report: "This document contains course notes and exercises for a course in technical writing. The course is intended for third-year computer engineering majors, and emphasizes technical documentation directed to engineers, engineering managers, technical writers, and other specialized audiences. Exercises include job applications and résumés, memos, electronic correspondence, algorithm description, in-program documentation, naive-user documentation, survey articles, recommendation letters, proposal writing, document specification, progress reports, formal technical reports, and an oral presentation."After you have mastered the mechanics of writing, the next challenge is to develop a sense of style. The book Clear and Simple as the Truth: Writing Classic Prose by Francis-Noel Thomas and Mark Turner is a wonderful treatise on the topic of writing style. Be sure to explore the authors' online guide to good writing.
A complete manual for the Gnu version of the awk language.
Full implementations of the ML language are available free for Linux, Windows'95, and many other operating systems.
How to Write Unmaintainable
Code by Roedy Green.
Last updated on December 20, 1999 by Charles Elkan, email@example.com