academic

HANDBOOK FOR UNDERGRADUATES

Computer Science Handbook for Undergraduates

Table on Contents

  • Part I. The Concentration
  • Part II. Resources and Opportunities

  • Part I. The Concentration

    What Is This Handbook?

    The information printed in the Fields of Concentration book presents formal requirements for earning an undergraduate degree in computer science. This handbook should be treated as a supplement to the Fields of Concentration because it provides a more detailed description of requirements, discusses alternatives, and amplifies some matters stated only tersely in the Fields of Concentration. In addition, it is intended to give advice, instead of merely providing rules, on a wide range of topics including thesis writing and combined concentrations. In its advisory capacity, this document should be read with skepticism for two reasons. First, it represents the author's personal views, which are based on accumulated experience; but others may rightfully hold different views on subjective questions. Second, it is written without any personal knowledge of the reader, and good advice can only be given with an understanding of the unique circumstances of each individual student. While the advice provided in this handbook may prove useful to the reader, it does not replace individual discussion with a faculty advisor or other knowledgeable individual.

    This handbook also lays out some facts about other university resources and activities, which are not part of the formal academic program, but strongly affect the lives of undergraduate computer scientists in the School.

    Where Does Computer Science Sit at Harvard?

    Computer science is one of three undergraduate concentrations administered by the School of Engineering and Applied Sciences (SEAS). The other concentrations are engineering sciences and applied mathematics. With concentrations being declared at the end of freshman year, there are around 350 students in SEAS concentrations at any one time.

    SEAS faculty interests span both theoretical and non-theoretical aspects of computer science, electrical and mechanical engineering, environmental science and engineering, oceanography, materials science, and other subjects in applied science. There is a total of approximately 70 faculty members in the School.

    SEAS has no formal departments but several informal subgroups (Computer Science being one of them) and two major administrative organizations. Computer Science is overseen by the Associate Dean for Computer Science and Engineering, and there is another Associate Dean for Academic Programs. The School has its own endowment and was formerly a separate school of engineering; even now SEAS is administered by a "Dean" (not a "Chair"), but administratively, it is much like any other academic department of the Faculty of Arts and Sciences. From the student's standpoint, the lack of departmental walls within SEAS has created the opportunity for computer science programs that reach into allied disciplines such as electrical engineering and mathematics.

    While the computer science concentration is intentionally flexible in its requirements, you may wish to look at the other SEAS concentrations as well. It is common for a student to switch between concentrations (e.g., computer science and applied mathematics, which have strongly overlapping requirements) even fairly late in the game. Since the academic records are kept in the same office (Academic Office, Pierce 110), the paperwork to make such a change is minimal; and since faculty do not "belong" to particular concentrations, such a change may not even entail changing advisors!

    While there is no "Department of Computer Science", there is a faculty committee called the "Committee of Undergraduate Studies in Computer Science" consisting of all of the computer science professors. This is, in fact, the group that has final authority over degree recommendations, exceptions to rules, etc. for undergraduates in the computer science concentration. The chair of this committee is called the "Director of Undergraduate Studies in Computer Science", and has always been a computer science professor. (The Director of Undergraduate Studies was previously called the Head Tutor. The "Head Tutor" of a concentration is a different kind of animal from a "Senior Tutor" in a house -- Senior Tutors are Assistant Deans of Harvard College attached to each House. They are cognizant of students' entire academic and disciplinary record and work with the Masters of the Houses on matters concerning students as members of the House community.) Typically, the Committee as a whole meets to make degree recommendations and to vote changes in policy, and the Director of Undergraduate Studies deals with more routine exceptions on a case-by-case basis.

    Degrees in Computer Science

    The only undergraduate degree offered in computer science is the Bachelor of Arts, called the AB degree at Harvard (Latin for Artium Bachelor). The transcript will say "computer science", and if you graduate with honors, the diploma will also say "computer science" and your degree of honors. Harvard also offers an SB degree (Bachelor of Science), but only in Engineering Sciences. (The special SB degree exists to recognize the unusually heavy course requirements imposed by the requirements of the Accreditation Board of Engineering and Technology, which accredits our Engineering Sciences degree in exactly the way and to the same standards that it accredits those of MIT, Cal Tech, and the like.)

    At Harvard three things must happen to graduate with honors and hence to get the words cum laude, magna cum laude, or summa cum laude after the name of your degree:

  • You must have satisfied the requirements of an honors concentration;
  • You must have been recommended by that concentration for an honors degree; and
  • You must have met certain faculty-wide minimum grade point average standards that pertain to your entire program, not just your concentration program.

There are both honors and non-honors versions of the computer science concentration requirements. For an honors degree, one must take 14 half-courses in computer science and related fields, distributed according to a pattern that is explained later. (If you place out of Math 1, the number is reduced from 14 to 12, but 12 is the minimum for an honors degree in computer science.) For a non-honors or basic degree, one must take only 12 courses, again distributed according to a pattern explained later; placing out of Math 1 reduces this number to 10.

To be precise, one must not only take the requisite 10 to 14 half-courses; one must pass them (that is, receive a grade of D- or better). No course taken pass-fail may ordinarily be counted towards the concentration requirements. (Exceptions have been granted only when a student started off in a different concentration and took a Math or CS course pass-fail, and then got "converted" to CS.) For concentration credit, it is not necessary to receive an honors grade or even a satisfactory grade (C- or greater), but obviously getting too many Cs and Ds could make it hard to have a GPA high enough to earn honors.

To be recommended by the concentration for honors, one must not only complete the honors requirements, but must complete them with a degree of distinction, which usually means in practice a flat B average in the 12-14 courses in the concentration program. (For the higher degrees of honors, more is required, as is explained later.) The faculty-wide honors minima are explained in the Handbook for Students, but roughly speaking to graduate cum laude the overall grade average must be in the top 50% of the graduating class.

I'll come back later to the fine points of these calculations, but certain general advice might be offered now. At any point in time, if you know how many courses you have taken that count towards the computer science concentration, you can calculate the average number, and reasonable maximum and minimum numbers, of concentration courses you will have to take per term. For example, suppose Mary is a biology concentrator about to begin her junior year, having taken Math 21ab and CS50 and 51, but nothing else that would count; is it feasible for her to complete an honors program in computer science? Well, she placed out of Math 1ab and has taken 4 other half courses, so out of the 12 courses for the degree she must yet take 8, and she has 4 terms to do it. 8/4 = 2, so if she takes 2 concentration courses in each term she can complete the degree program. Obviously there are more complex constraints due to prerequisite sequences, distribution of courses between fall and spring terms, and the like, but this is the first calculation she should do to see where she stands. (If she were content to go for an ordinary degree, the calculation would be 6/4 courses per term.) Naturally, these calculations are useful not only on entering a concentration but to assess the rate of work that will be needed to complete the degree.

Another calculation that one might carry out is a GPA calculation -- for example, if Mary now has 2 As and 2 Bs, what GPA must she maintain to remain eligible for honors? I won't go through this one right now because I would advise Mary not to use those considerations as the primary ones for determining her academic choices. Let me explain.

In my experience, most important judgments that are made about graduates of our program -- admission to graduate school, eligibility for fellowships, hiring into good jobs -- are made on the basis of what the graduate knows, not on the honors attached to his or her degree. Prospective employers typically sit down with a student and ask questions; graduate school admissions committees review and assess transcripts. But if these assessments are happening during the student's senior year, the prospective employer or graduate program has no idea whether the candidate will graduate with honors, or if so, in what degree. That cannot be determined for sure until just before graduation. So an honors degree, while a source of pride and a recognition of achievement, is not in itself a reasonable educational goal.

Of course, how much a student comes out knowing and whether the student was in an honors program are probably not uncorrelated either. Students who take more courses learn more, in general, and because the course requirements are higher for honors concentrators than for ordinary concentrators, honors concentrators tend to take more courses than ordinary concentrators. But that is not necessary; it is possible to take more courses than are needed for a non-honors degree without going for honors, and this might be a reasonable thing to do if, for example, the particular distribution of course requirements for an honors degree is not parallel to the student's specialized interests in the field.

The moral is: You should try to make the most of the educational opportunities available to you, seek out good advice, and do the most advanced work you can. But an honors degree is not a means to or a guarantee of that end, it is a structure giving some guidance about a way to become deeply educated.

Core Requirements

Computer science students who enter in September 2002 and thereafter are exempt from the Quantitative Reasoning, Science A, one from Historical Studies A or B and Literature and Arts A or C, and one of Science B or Social Analysis. The Handbook for Students details these requirements as well as those for transfer students and those who elect Advanced Standing.

Concentration Requirements: Basic Philosophy

Computer science is still a developing field. Leaving aside the work of pioneers like Babbage and Boole, which had limited direct impact on the development of computer technology, the history of computer engineering is perhaps of 50 or 60 years duration, the history of the mathematical underpinnings not much longer. New intellectual forces are regularly stirring up the waters in this still largely uncharted intellectual ocean. And yet in other respects, the field is profoundly conservative -- core notions such as that of a finite-state machine, or a memory hierarchy, or a semantics for a formal language, have been constants of the vocabulary for decades, though their instantiation and application have changed over time. So our undergraduate program seeks both to teach the core knowledge that will be of lasting value, and to provide exposure at an advanced level to areas of rapid development and change.

The field of computer science is conservative in another sense, in that it is largely driven by commercial and industrial forces outside the university, which must amortize the costs of their investments in software, hardware, and systems over long periods of time. So while we do not take it as a primary objective to teach particular languages and systems (there are no "Introduction to C++" or "Introduction to Windows" courses in our catalog), one should not get a degree in Computer Science here without demonstrating that one has learned how to use real software tools to solve significant problems. And at the same time, because development environments can change rapidly and adaptation is a useful skill for computer professionals, it is not a bad thing for students to have an abrupt introduction to a new environment; learning how to adapt is in itself a useful skill.

Finally, the field of computer science is distinguished by the fact that what we know about it spreads out in many different directions, but the amount we do not know about it is vast. This means that both broad programs that give limited exposure to a variety of subfields, and more specialized programs that aim towards research problems, have their place. It is characteristic of computer science that undergraduates can, and often do, discover or develop things that have never been seen before. So the concentration requirements provide an opportunity for any student to produce original research.

Undergraduate Courses: A Micro-Introduction

Three computer science courses are required of all computer scientists -- Computer Science 50, 51, and 121. CS50 and 51 form a two-semester introductory sequence to the core concepts, tools, and skills of the practice of computer science. These include training in software design, development, debugging, and maintenance use of software tools, operating system tools, networks and .databases, imperative and functional programming languages and styles, object-oriented programming, and key underlying concepts, such as finite-state processes, formal and mechanical logic, syntax and analysis of formal languages, and basic concepts of computer architecture. CS121 is the basic course in the mathematical theory of computation -- it entails no programming, but develops sophistication in formal modeling and formal reasoning. Most other more advanced courses in computer science have at least one of CS51 and 121 as a prerequisite, so it is a good idea to take these courses as early as your preparation will permit.

It is not uncommon for concentrators to bypass CS50 and begin their computer science sequence with CS51. Such students typically have a great deal of computer science experience and/or a 5 on the Computer Science AP Exam. Simply being a good "programmer" is not reason to bypass CS50, however being an established computer scientist is. This decision should be discussed with a faculty member in Computer Science.

Beyond these courses, some key to the level and subject of a computer science course can be inferred from the tens and hundreds digits of the course number.

  • Courses numbered 1xx are mostly for undergraduates.
  • Courses numbered 2xx are mostly for graduate students, although some of them have very sizable undergraduate enrollments, and in general, undergraduates are allowed and even encouraged to take 2xx-level courses if they are adequately prepared for them.
  • 3xx-level courses are really "place holders" for graduate students doing research under the direction of particular professors, and are not open to undergraduates under any circumstances.
  • Computer Science 91r provides a vehicle for undergraduate research like the 3xx courses provide for graduate students. CS91r is often taken by seniors writing theses, but may be taken somewhat earlier if a student wishes to pursue a particular advanced topic not available through ordinary coursework.

The tens digit is loosely correlated with subject matter:

Computer Science Course Numbers

x0x Theory
x1x Theory
x2x Theory
x3x Scientific Computing
x4x Hardware
x5x Programming Languages
x6x Software Systems
x7x Computer Graphics
x8x Artificial Intelligence
x9x Reading, Research, Practice

Concentration Requirements: The Details

For an AB in computer science you must complete courses in four categories:

    1. Basic Mathematics
    2. Foundations
    3. Basic Systems
    4. Technical Electives

For an honors degree you must complete more courses, overall and in certain specific categories, than for a non-honors degree, and you must also satisfy certain grade point average requirements. To graduate with high or highest honors there are additional requirements described below. The official version of these requirements is set out in the Fields of Concentration book.

Basic Mathematics

This requirement (for either an honors or non-honors degree program) is to complete mathematics through the level of Mathematics 21. There are three common paths to complete this requirement: to take Mathematics 1ab and 21ab, to skip Mathematics 1ab on the basis of an Advanced Placement test or the Harvard mathematics placement exam, and simply to take Mathematics 21ab or to take Mathematics 25ab or 55ab. Naturally some students may place into Math 1b and then take 1b and 21ab.

On this subject there are a few notes, which are fundamentally simple. No formal documentation is needed of an AP or Harvard placement test score in order for you to pass out of Math 1ab, but you are strongly advised not to ignore your placement test score and attempt a more advanced course than that for which your test scores show you to be prepared. The important fact in determining whether you are ready for a particular course is, of course, not what you once were taught but what you now know. Long experience has shown that the placement advice based on the Harvard Math Placement test is rarely wrong.

On rare occasions a student may begin at Harvard with prior preparation beyond Math 1ab. If you feel you are in this situation, several options may be open to you. If you are mathematically inclined, you may wish to take Math 25 or 55, which do not overlap strongly with the usual high school or college treatment of calculus and linear algebra. Or you may wish to pursue a 100-level course in algebra or analysis, such as Mathematics 121. Either way, there is no reason for you to repeat mathematical material about which you are already fully informed, but it is a requirement that you take at least one full year of mathematics at Harvard.

Mathematical and Theoretical Foundations

This requirement is that you take CS121 (Introduction to Formal Systems and Computation) plus one additional courses from the list of approved "Theory" courses. The "Theory" list includes Applied Mathematics 106 and 107; and CS124. Although these courses come under several different rubrics in the course catalog, they have in common a considerable treatment of formal mathematical analysis of discrete structures and systems.

Certain additional courses may count as "Theory" courses. For example, as a matter of editorial practice, we do not list graduate-level courses in the Fields of Concentration, but any computer science course numbered 20x, 21x, or 22x (CS207 or 226, for example) is a Theory course and may be included in a study plan without a special petition. (Naturally, these courses have prerequisites!) Occasionally, a petition to count Engineering Sciences 101 has been granted.

Basic Systems

The requirement is CS50 and 51. A few students will place out of CS50 on the basis of prior work (although the AP test in itself is not equivalent to CS50). If you place out of CS50, it must be replaced by another technical elective course. Placement out of CS51 is extremely rare.

Technical Electives

For the honors program, students must take 6 technical electives comprised of computer science and other approved courses. To ensure that students see a broad selection of computer systems topics, students must included courses in three different subfields of computer systems, as indicated by having different middle digits 4,5,6,7 and 8.

Students with an interest in pursuing up to three technical courses outside of computer science may do so provided that the student is doing a senior thesis, and that these courses contribute to the preparation for the thesis. Students planning on doing this must have their thesis topic approved before beginning their fall Senior semester.

For the non honors program, students need to take 4 technical electives, and for breadth, the program must include courses in two different subfields of computer systems.

Reading and Research Courses

As already mentioned, CS91r is often taken one or both semesters of senior year by students carrying out thesis research and writing and is sometimes taken before senior year by students pursuing special research projects. There is no limit to the number of CS91r courses a student may take, but only one of them may be part of a student's Plan of Study for the concentration, and those may only be used as technical electives. Any unit of CS91r beyond the second can only be used as part of the student's non-concentration, non-Core electives.

If you wish to enroll in CS91r, you must put it on the study card. You and the supervising faculty member must fill out a form, obtainable from the Academic Office (Pierce 110) or the office of the Director of Undergraduate Studies, describing your project and its intended output. Very vague descriptions ("graphics research" or "working on my thesis") are unacceptable. Both this form and your study card must be signed by the Director of Undergraduate Studies, who in signing certifies the suitability of the project.

Students sometimes refer to CS91r as "Independent Study", but that is actually a different course. CS91r is conducted under faculty supervision and is letter-graded. Independent study is graded credit/no credit and can be in almost any academic area. Independent study cannot be used for concentration credit, and computer science faculty rarely sign for Independent Study courses.

Petitions

Exceptions are possible to many rules. Some exceptions are simple and can be dealt with directly by seeing the Director of Undergraduate Studies. Examples are requests to count a particular course not in the standard list of technical electives as fulfilling a concentration requirement. You should approach the Director of Undergraduate Studies with a course description and a revised Plan of Study showing where the course would fit in your concentration program. (Sometimes this preparation can be done by e-mail.) If the Director of Undergraduate Studies accepts that the proposed course is similar in technical level and substance to other courses that have been counted for concentration credit, he may agree to the request on the spot. The way his acceptance of such a request is documented is by his signature on a revised Plan of Study form; he may initial the unusual course to note that he has recognized that it is unusual. Note that whole study plans are accepted, not individual courses; three unusual courses in the same study plan might be unacceptable even though each had been successfully counted in other students' study plans.

More complex petitions, or requests for credit for courses that cannot be judged quickly by the Director on Undergraduate Studies, may require a formal petition of the Committee of Undergraduate Studies. This is simply a letter describing the request and providing basic documentation, addressed to the Committee and delivered to the Director of Undergraduate Studies or the Academic Office. Action on such petitions can sometimes be taken by mail ballot without a meeting of the Committee, but may also require waiting until the next Committee meeting.

Entering the Concentration

The steps to become a computer science concentrator are straightforward, whether you are a freshman entering a concentration for the first time, or an upperclassman switching in from another field.

  1. Read this document, and the parts of the Fields of Concentration and the course catalog relevant to this field. Assess, as best you can, where you stand with respect to concentration requirements, and also in what directions within the field your interests lie. Attempt to draft a plan for completing concentration requirements, showing what courses you will take term-by-term and year-by-year. Obviously, projections several years ahead are unlikely to remain accurate, but going through the exercise will at least ensure that your general ambitions are achievable.
  2. Make an appointment to see the Director of Undergraduate Studies. (Simple factual questions can often be answered by e-mail, but deeper questions require face to face discussion.) Discuss your goals and plans with the Director of Undergraduate Studies.
  3. Repeat Step 2 until your course plans are clear for at least the next term or two, and you have a plan for satisfying all concentration requirements over your remaining undergraduate years. The study plan does not need to specify non-concentration courses term-by-term and does not have to be completely certain for later years.
  4. There are two forms that need to be signed by the Director of Undergraduate Studies. One is the Change of Concentration form; this is the three-part form that specifies not only your plans for fulfilling concentration requirements but your Core requirements as well. It must be signed by the Director of Undergraduate Studies and also your Freshman advisor or Senior Tutor, and returned to the Registrars office. You will not need to file this form again unless you change from computer science to another concentration field.
  5. The other form is the Computer Science Plan of Study form. This is a simple form, available electronically or in hardcopy from the Academic Office, showing how you expect to fulfill the requirements in the four categories shown just above. This form is filed in our departmental Academic Office, Pierce 110. You should refile it about once a year as the courses you actually take vary from the courses on your study plan, since our determination of whether you have satisfied concentration requirements is based on whether you have a valid study plan on file and whether you have taken the courses listed on the study plan. (See "Honors Determination" below for more on the benefits of keeping your study plan up to date.)

The Faculty Advisor

Every undergraduate concentrator is assigned a faculty member to serve as academic advisor. The Director of Undergraduate Studies will write your advisor's name on the Plan of Study form when he first approves it; thereafter, the records of what advisors have which advisees is maintained in the Academic Office (Pierce 110). If you forget, you can call 495-2833 or e-mail Patricia Ryan (ryan@seas.harvard.edu) or Sandra Godfrey (godfrey@seas.harvard.edu) to check.

You must meet with your advisor at the beginning of each academic term to discuss your experience during the previous term and your plans for the coming term. Your advisor must sign your study card, but you should not expect that your advisor will sign your study card without duly advising you. It is your responsibility to contact your advisor far enough in advance to learn when he or she will be available for talking about your circumstances and approving your plans for the term. Certain concentrations schedule mass study-card signing sessions just before they must be turned in, with rapid turnaround and an anonymous interface. In computer science all advisors are professors and any individual professor may not be available right before study cards are due. If you cannot get your advisor's signature, you may have to turn in your study card late; remember that a financial penalty is imposed for late study cards. Certainly, you should not wait to be sure about your course plan to seek out your advisor -- advisors are there to advise, and advice is most needed when there are decisions to be made!

The initial assignment of a faculty advisor may be somewhat random, but you may have reasons later on for wanting to have a particular faculty advisor -- you enjoyed a particular course he or she taught, you have become interested in a particular subfield in which that faculty member is active, you would prefer a woman as an advisor, etc. Feel free to approach the Director of Undergraduate Studies for reassignment. It may not be possible to meet every request since advisees must be assigned to advisors in some kind of proportion, but any reasonable request will be respected. You are also free, of course, to seek advice from any member of the faculty, whether or not that person is your officially assigned advisor. It makes perfect sense to consult one of the Theory faculty for advice about the sequencing of Theory courses, for example, if your advisor is an expert in operating systems. And the Director of Undergraduate Studies is always fair game for questions.

Planning a Course Program

The requirement for a computer science degree are, by design, extremely flexible in order to accommodate students with a wide variety of preparation, interest within the field of computer science, and ambition for what they will do after graduation. This flexibility in the concentration rules also acknowledges the historical fact that in assessing, ex post facto, the careers of those who have proved to be successful computer scientists, it is exceedingly difficult to say what particular subjects are essential core training, and which ancillary subjects have proved to be most important in bringing new ideas to the field.

Consequently our curriculum has relatively few specifically required courses (CS50, 51, and 121, plus mathematics to the Math 21 level). Most of the other courses are organized into broad categories, requiring your program to have some distribution across categories, but allowing you considerable latitude in choosing directions of special interest. The required courses are rather intensive and contain a lot of material, but as a consequence, the more advanced courses have few prerequisites. The "prerequisite tree" of computer science courses is "short and bushy", not "tall and narrow".

The limited number of constraints on course selection comes with a price: there are so many options for study plans, that considerable responsibility is placed on you to use the freedom wisely! Here are some of the factors you should take into consideration when designing a study plan, or choosing courses in your junior or senior year.

  • The required courses, which are prerequisite for many other courses, should be taken as early as is practicable.
    • Thus most undergraduates in computer science will take one or two semesters of mathematics during their freshman year, at whatever level they have placed into. Naturally, it is especially important to take mathematics as a freshman if you have placed into Math 1a, since otherwise you will not be able to complete Math 21b until the end of your junior year (unless you go to the Harvard Summer School).
    • Likewise, it is useful, though less critical, to take CS50 as a freshman. (CS50 is, unfortunately, offered only in the fall term.) If you have significant concerns about your academic preparation -- for example, you have placed into Mathematics Ar, or for other reasons anticipate having difficulty with mathematics, or have another major academic commitment for the first term of your freshman year (for example, if English is not your native language and you will be taking expository writing your first term), you may decide to defer taking CS50 until the sophomore year. Rest assured that it is quite possible to complete an honors program even if you do not take CS50 until later.
    • CS121 is taken by a few freshmen each year, but there is no need for it to be taken before sophomore year, and even waiting until junior year is not severely problematical.
  • Think about workload when choosing your courses. It is hard to give any general rules about this subject, as some students, through superb time management skills, have successfully carried extremely heavy workloads. But here are some things to think about.
    • Many computer science courses, but by no means all, have heavy workloads. (In the courses presented in the 2001-2002 CUE Guide, the average workload rating is about 3.5, as compared to an average for all natural science courses of about 2.9; but the range for computer science courses runs all the way from 2.3 to 5.0.) Think hard before signing up for several courses with high workloads.
    • Don't forget to take into proper account other non-academic activities in which you are involved (e.g., jobs, sports, theater, music). If you are involved in an activity with a predictable yearly cycle (e.g., an athletic team or an orchestra), your whole course program might be designed to accommodate it.
  • Try, if possible, to have some breadth in your concentration program each year.
    • Maintaining breadth within each year lessens the likelihood of unpleasant surprises after it is too late to do anything about them.
    • Maintaining breadth within each year also tends to make programs more progressively structured. Thus, it becomes more likely, when it comes time to choose a senior thesis topic, that you will be advanced enough in some field to have a sense of where to look.

    MIT Courses

    Harvard and MIT have a wonderful cross-registration agreement, under which any MIT student may take any Harvard course, and vice versa, with a minimum of paperwork and no exchange of funds. As a matter of policy of the computer science concentration, almost any MIT course in electrical engineering and computer science (Course 6) can be used in place of a comparable course in computer science from the Harvard offerings. Likewise MIT Math Department courses (Course 18) can be used in place of courses from our Mathematics department. Courses from other departments (e.g., the Media Lab) may not necessarily be acceptable in our study plans.

    In practice, MIT courses are not heavily utilized in undergraduate study plans, since Harvard offers a full range of computer science courses. On average, each computer science concentrator takes less than one MIT course. The usual reasons for taking an MIT course are:

    • Scheduling. You can't take the Harvard course when you want to because it meets at an inconvenient time of day or in the wrong term.
    • Special topic. There is no comparable Harvard course. This particularly applies to certain advanced and graduate courses. (This is also the main reason for MIT students to take Harvard courses.)

    Note that MIT's calendar is not the same as Harvard's, so cross registering into an MIT course may affect your vacation schedule, arrival date for the fall term, etc. If you wish to use an MIT course for concentration credit, the cross-registration form must be signed by the Director of Undergraduate Studies.

    Senior Theses

    Computer science is almost unique among scientific fields in that so little is known about it that undergraduates regularly make discoveries and create systems that are novel and original. Courses in computer science are progressive, but prerequisite sequences are relatively short, and even in 1xx-level courses it is not unusual for research issues of contemporary importance to be discussed.

    Thesis writing presents an opportunity for undergraduates to come to grips with a research problem and to make an original contribution towards solving it. Thesis writing also teaches research skills, both intellectual (e.g., Where do problems come from? What is the right size problem to try to solve? How does a problem change as one works on it?) and more mechanical (e.g., How do I organize research materials? What kind of notebook should I keep? How do I find materials in the library and on the World-Wide Web? How much time does it take to implement an idea in code? How much time does it take to write a document describing a problem and its solution?). Many students report that thesis research was the single most important thing they did as undergraduates.

    Theses generally have an original component -- usually computer science theses are not surveys or recapitulations of previous research -- but, of course, an undergraduate thesis is not expected to be a PhD thesis. Often a professor will point out a "loose end" in a paper in the current literature that an undergraduate can pursue, without having to develop a lot of groundwork. Sometimes a faculty member with a research project already involving several graduate students will include an undergraduate with appropriate background in the group, and the undergraduate can then attack a particular aspect of a larger effort.

    Theses are not merely computer programs, though a program may be written to validate an algorithm or an approach, or to provide comparative data on several approaches. Some theses are mathematical and involve no programming at all. It is not unusual for a thesis to turn into a publishable paper.

    Usually late in the junior year is as early as it makes sense to think about theses. We will hold a meeting late in the spring at which faculty with experience in supervising theses will meet with juniors interested in writing theses and seniors who have just turned them in. After that, if you have not already done so, you will have some time to contact potential advisors and investigate possible topics. If you can leave for the summer with an idea of an area or project in which you hope to write a thesis, the prospective thesis advisor may be able to suggest some readings and even some small projects for you to undertake before you return for the fall. It is not impossible to begin a thesis at the beginning of the senior year. The due date for theses in computer science is relatively late, after the end of spring break (typically around the second week in April). A first draft is required to be submitted in the middle of the spring term (typically the first week in March). Though this may seem a discomforting requirement since the draft must be written before the research has been completed, experience has shown that it results in much higher quality theses. (The concentration began requiring first drafts when it discovered that the documents being submitted should have been first drafts, and would have been much improved by going back and forth to the faculty advisor once or twice.)

    Each thesis is read and evaluated by three faculty, one of whom is typically the thesis advisor. It is the responsibility of the student and the thesis advisor to line up the readers. Generally, thesis readers are computer science faculty, but faculty from allied fields are also possibilities. Ordinarily, graduate students cannot be used as official readers. Each reader assigns one of four grades: no honors, cum laude, magna cum laude, or summa cum laude, to the thesis (+ and - signs may also be used for finer distinctions); these thesis grades are used in the determination of graduation honors as explained just below.

    The Gordon McKay Library, 3rd floor, Pierce Hall, keeps copies of past thesis; these are available for you to examine if you would like to see examples of what students have done in the past.

    Honors Determination

    There are three degrees of honors on Harvard diplomas; these have the same names as the thesis grades just mentioned: cum laude, magna cum laude and summa cum laude. To graduate with a particular degree of honors, you must (a) be recommended by your concentration and (b) satisfy certain faculty-wide rules. To keep the two notions separate -- the departmental recommendation on the one hand, and the actual honors received on the other hand -- different terminology is used. Departmental recommendations are: no honors, honors, high honors, or highest honors and the diploma uses cum laude, magna cum laude, and summa cum laude. In case a student is recommended for highest honors but graduates only magna, the student's diploma reads "magna cum laude with Highest Honors in Computer Science" ("magna highest" in the vernacular).

    Under certain circumstances, a student who has not been recommended for honors by his or her concentration (perhaps because he or she was not even in an honors program) may still graduate "cum laude in General Studies (CLGS)". The rules for this are explained in the Handbook for Students. It is important here only to note that to receive "Honors in General Studies", or indeed to graduate from Harvard at all, you must still satisfy the requirements of some concentration. (There is no field of "General Studies" in which you can receive a degree.) Indeed this nomenclature is sufficiently peculiar and confusing that it is currently under review and may change.

    In order to qualify for a departmental recommendation for honors in computer science, you must complete an Honors program with a high grade-point average. In addition, to be recommended for high or highest honors, you must display unusual excellence in the field. All honors recommendations are voted individually after discussion by the Committe on Undergraduate Studies in Computer Science; the standards, described in an offical document and reproduced below for reference, indicate the minima ordinarily required for students to be considered for the various degrees of honors. (The numerical levels cited here are based on Harvard's 4-point scale, explained in the Handbook for Students. For example, A = 4.00, A- = 3.67, B+ = 3.33, B = 3.00, B- = 2.67.)

    • Honors. 3.00 average in the field, that is, in all the courses listed on your Plan of Study on file in the Academic Office, with the exception of CS91r and similar courses.
    • High Honors. 3.50 average in the field, plus an excellent thesis or four graduate half-courses in computer science with a grade point average of at least 3.50. "Excellent" means mostly magna readings or better.
    • Highest Honors. 3.67 average in the field, plus an outstanding thesis. "Outstanding" means a mixture of magna and summa readings.

    During the discussions that result in recommendations by the Committee on Undergraduate Studies, considerations such as the following often arise: the overall distinction of the technical record, including the lack of low grades and the breadth and ambition exhibited in the selection of courses; and scientific accomplishments not resulting in a thesis or coursework.

    Since the concentration GPA calculation is done on the courses shown on your Plan of Study -- and not on all courses that could be counted for concentration credit -- you have some freedom to "gerrymander" your program to exclude low grades from the concentration GPA. But required courses cannot be excluded, and a low grade, even if excluded from the concentration GPA, remains on your transcript and will lower your overall GPA.

    Note that our rules provide an incentive for students with high grade point averages to pursue advanced coursework, even if they choose not to write a thesis. For some students, who for example enter the concentration relatively late and hence do not have the preparation by the beginning of their senior year to find a good thesis topic, or who start on theses that simply turn out to be less attractive by the end of the fall term than they looked at the beginning, the option of substantial graduate-level coursework provides an avenue for some of the same kind of exposure to the study of ill-formed or unsolved problems. However, students should by no means feel driven by the incentive of a high honors recommendation to enroll in courses they would otherwise not wish to take. As stated earlier, the important thing about your education is what you know at the end of it, not what decoration is attached to your diploma.

    Advanced Standing and AB/SM programs

    If you are offered and accept Advanced Standing on the basis of performance on CEEB AP tests or otherwise, you have a number of attractive options open to you:

    • You may complete your computer science degree requirements in three years and graduate with an AB in computer science.
    • You may be able to enter a Master's degree program in Computer Science during your fourth year, and graduate in four years with both AB and SM degrees.
    • You may be able to enter the SM program at Harvard in another subject, such as Applied Mathematics.
    • You may decide not to follow through on your Advanced Standing program and revert to an ordinary four-year AB degree program. (This maneuver is not automatic. You must speak to the Office of Advanced Standing and your Senior Tutor if you decide to pursue it. If you drop Advanced Standing, your Core requirements, which were reduced from seven courses to six [or from seven to five] when you accepted Advanced Standing, go back up to the original number again.)

    With all the wonderful options Advanced Standing opens up but does not require, why would anyone turn it down? I can think of only one reason, but it is a very important one. Advanced Standing is good for people who are confident that they know what they want to study, but dangerous for people more inclined to explore intellectual options. Please note that this statement suggests a polarity between two positives, not a positive and a negative! The Harvard course catalog is very thick, and it contains many fields about which you probably know very little but have some curiosity. A common experience here is for a student to take, as a freshman, a course in field X because he took it in high school and knows that X is what he is going to concentrate in, and a course in field Y because he has a curiosity about it and it fulfills some other requirement; and then to discover that he actually dislikes X as it turns out to be at the college level and loves Y! Discovering something new about the world and, by the same token, about yourself is harder if you accept sophomore standing.

    Also, it is worth noting that while Core requirements are reduced from eight half courses to six, computer science concentration requirements are unchanged -- 12 to 14 half courses for an honors degree. Thus, a greater percentage of your required undergraduate coursework will be technical if you elect sophomore standing.

    AB/SM Degree Programs

    If you wish to pursue a Master's degree in computer science during the fourth year of an Advanced Standing program, you must apply. The application is due in mid-December of the year before you will enter the program (your third year, in other words). It is the standard Harvard Graduate School of Arts and Sciences application form and all the usual materials are needed (letters of recommendation, transcript, etc.), but Graduate Record Examinations are not required. However, you are not competing against others for admission, and ordinarily, any student who is expected to be able to complete the Master's program with distinction is admitted. (The same does not apply in the case of a student who completes a standard four-year bachelor's program and wishes to enter the SM program in the fifth year. Such a student would be treated like an applicant from another school.)

    A student in a fourth-year AB/SM program is simultaneously an undergraduate and a graduate student, and thus retains eligibility for undergraduate housing and financial aid. In other words, in many ways your life as an AB/SM student will not be drastically different from what it was during your first three years at Harvard. (On the other hand, a student who completed an ordinary AB in four years and entered our regular SM program during the fifth year would not be eligible for undergraduate housing or financial aid.)

    But in other respects there are important differences. To get a Master's degree, you must complete eight half courses in Computer Science and closely related subjects, of which at most three may be 1xx-level courses. "Closely related" means mostly mathematics, applied mathematics, statistics, and certain engineering courses -- a much smaller range of courses than that over which undergraduate study plans can be constructed. Moreover, none of the eight courses for the SM can be in common with any of the courses used to satisfy undergraduate degree requirements. For example, if you are an ordinary Advanced Standing student doing an honors AB in computer science, you need 24 half courses for your Harvard degree and at least 12 of those must be for your undergraduate concentration in CS; the eight courses for your SM degree must be a disjoint set, mostly at the graduate level. That works out to at least 20 technical courses out of the 32 for your two degrees, certainly an intensively technical program by any standard; moreover, during the fourth year you will probably be doing nothing else except technical coursework. Thus, from an intellectual standpoint, and in terms of who you see every day and where you spend your time, your life will be more like that of a graduate student than that of an undergraduate.

    Juggling your AB and SM Degree Programs

    If you enter an AB/SM degree program, the obvious way to complete it is to do your work towards the Bachelor's degree during the first three years and your work towards the master's degree during the fourth. Indeed, you are required to be ready to graduate with an AB at the end of the third year. Nonetheless, there are ways, potentially advantageous ways, of doing some of the work for your bachelor's degree during the fourth year, and/or some of the work for your master's degree before the fourth year.

    The precise requirement about finishing the bachelor's degree in three years is that you must have completed the requirements for some bachelor's degree by the end of the third year. But the bachelor's degree is not actually voted or awarded until the end of the fourth year, so work done during the fourth year can qualify you for a higher degree of honors than you would have had at the end of the third year. So, for example, you might be able to write a thesis during the fourth year. But with eight half courses needed for the master's degree and no allowable usage of work for both undergraduate and graduate degrees, how would one have time for anything except the master's degree coursework during the fourth year? The answer can lie with "bracketing". A bracketed course is one that [looks like this] on your transcript; it cannot figure into any computation relating to undergraduate degree requirements (neither counting towards the 24 half course requirement, nor figured into GPA calculations for undergraduate honors). But a bracketed course is "banked" and may be "used" during the fourth year towards your Master's degree requirements. (In fact, all the courses taken during the fourth year towards the master's degree are also bracketed.) Thus, one strategy might go something like this. During the junior year, the student carries a normal course load but one of the courses, CS2xx, will not be needed for the undergraduate concentration requirements. So, the student brackets CS2xx. During the fourth year the student takes only seven courses towards the SM degree, and one other course for the undergraduate program.

    Bracketing must be done at the beginning of the term and may not be done retroactively, so planning should be done well in advance.

    Honors and AB/SM Programs

    If you are an AB/SM degree candidate with both degrees in the subject of computer science, none of the eight courses used for the SM degree can be used in any way towards the AB degree. In particular, this means that the option of qualifying for high honors by completing four graduate-level computer science courses is likely to be very difficult to achieve, since those four would have to be in addition to the eight needed for the SM degree. Note that in principle, it is also not possible to use as a thesis towards the AB degree a document prepared as part of a graduate-level course (CS299r, for example) that is being used in the SM degree program. On the other hand, it is probably reasonable to regard the awarding of the AB degree with high honors as rather moot if one is going simultaneously to get an SM degree in computer science anyway.

    This subject does not belong here since there is nothing special about it that relates to the computer science concentration. But it is the subject of frequent confusion so we take this opportunity to be clear. Some students think that if they have trouble finishing concentration requirements because they have, for example, entered the concentration as a junior, they can simply not graduate in their fourth year and come back for an extra term or two. This is false! You must complete your degree requirements in eight terms, or pick up extra courses in summer school. See the Handbook for Students for exceptions, petitions to the Administrative Board, etc.

    Combined Concentrations

    Almost every Harvard student has multiple academic interests, and many students wish to pursue several interests while they are here. Harvard has no system of "minors" (which is why "majors" are instead called "concentrations" here). There are, however, several avenues for pursuing multiple academic interests.

    • Electives. Even if you are in an honors program, about a quarter of your coursework is committed neither to your concentration nor to Core curriculum requirements. Expository writing and language requirements may eat into your electives somewhat, but most students are able to take an elective course at a rate averaging almost one per term. This is quite sufficient for developing a significant expertise in a field other than your concentration. If, for example, you are a computer science concentrator and wish to develop a significant understanding of art history, you could consult the Head Tutor in Fine Arts for advice on selection and sequencing of courses in that field. Note that the way to gain the most freedom to develop a strong education in a second field is to expand your electives by opting for the ordinary, non-honors program in computer science.
    • Technical electives. If your secondary interest is closely allied with computer science, it may be possible to do significant coursework in that field as part of your concentration program. For example, students with strong interests in economics, linguistics, or cognitive psychology can take up to three courses in those fields as part of their computer science program. However these courses can be counted towards the concentration only if the student is writing a senior thesis, and these courses are relevant towards that thesis.
    • Combined concentrations. The "most serious" way of pursuing another interest is to do a combined concentration. This option is intended for students with a serious interest both in computer science and in an area which is foundational to the study of computing, or where computing is being applied in significant and novel ways. The goal of the combined concentration is to provide the student with a solid education in both fields and to present an opportunity for research in their area of intersection.

    Note that Harvard has no "double degrees". A combined concentration is a single concentration based on fields that are related to each other. The diploma earned by a joint concentrator reads "AB in computer science and psychology" or something similar (only one AB, not two). One of the two fields (the one listed first on the diploma) is the "primary field", and the other is the "secondary field". Computer science can be either the primary or the secondary field. But in any case there must be an area of intersection sufficiently broad that the concentrator can write a thesis acceptable to the faculty in both fields. Thus, there are no combined concentrations such as computer science and history, but there have been combined concentrations in computer science and music (focused around electronic synthesis or mechanical interpretation of notations) and in computer science and visual and environmental studies (focused on graphic design, animation or automated image rendering). Note that even if the two fields have an intersection, the student's particular interests may preclude a combined concentration. For example, a student deeply interested in computer graphics and in Beethoven would not be a good candidate for a combined concentration, no matter how serious the interest is in both intellectual pursuits.

    Whether computer science is the primary or the secondary field, the program consists of a suitable amount of coursework in both fields (as described below) and a thesis which integrates the student's work in the two fields. The program must be approved both by the Committee on Undergraduate Studies in Computer Science and by the body responsible for undergraduate programs in the other field. Early planning of the program and the thesis topic, and selection of appropriate advisors from both fields, are essential.

    The official requirements for combined concentrations involving computer science are available electronically and in hardcopy from the Academic Office. They are reproduced below for reference.

Computer Science Joint

  1. The course requirements in Basic Mathematics, in Mathematical and Theoretical Foundations, and basic Systems as specified for the Honors degree in computer science.
  2. At least three half courses in the secondary field.
  3. Three computer science technical electives. These three courses must all have different second digits from the list 3,4,5,6,7,8,9. So one of these courses may be a 91r.

Each student in a combined concentration must write a thesis to be read both by computer science and by the other field. The thesis is a very important part of the combined concentration program, as it provides intellectual unity to the student's academic efforts. Typically, the thesis advisor comes from the primary field, but the secondary field also assigns an advisor with whom the student should review his or her progress as the thesis is researched and written. Whether computer science is the primary or the secondary field, three readers approved by computer science must evaluate the thesis, just as in the case of a pure computer science concentration. Their readings form an important part of the basis for determination of honors recommendations. However, to avoid the need to identify a large number of readers for highly specialized work, it may be possible to substitute a reader from the other field for one of the computer science readers in case that reader from the other field is able to review the thesis from the perspective of its computational significance. This is often possible when a reader from the other field is technically expert, for example a faculty member in mathematics or engineering.

Honors in Combined Concentrations

Combined concentrations are not overseen by combined academic departments or even a joint committee; they are managed rather independently by two separate programs. In particular, honors recommendations for combined programs with computer science are determined as follows: each field's faculty committee votes an honors recommendation independently, and the recommendation forwarded to the full faculty is the minimum of the recommendations of the two fields. Thus a joint computer science - mathematics concentrator who receives a "high honors" recommendation from the Committee on Undergraduate Studies in Computer Science and an "honors" recommendation from the Mathematics Department will be recommended to the faculty for an "honors" (cum laude) degree.

The Committee on Undergraduate Studies in Computer Science uses the same grade-point average cutoffs and interpretations of the thesis readings in making honors recommendations for joint concentrators as it does for pure computer science concentrators. However, only the "computer science" part of the program (that is, the part of the program under Clause 1 and 2 in the requirements for a combined concentration with computer science as either the primary or the secondary field) is taken into account in calculating the grade point average.

Is a Combined Concentration Right for You?

Combined concentrations may provide a unique opportunity to pursue interdisciplinary research and gain recognition for pursuing advanced technical study in more than one field. For certain students, the recognition of having the names of two fields on the diploma may be of special professional importance. For example, two foreign students have told me that it was important to have the words "computer science" somewhere on their diplomas, even though the field was not their primary interest, since without that certification it would be impossible to gain employment as a programmer. Each of these students entered into a combined concentration with another field and wrote a thesis in the intersection to qualify for the joint degree, even though the research they had to carry out was not of special interest to them. (For American students this incentive does not really exist, since employers hiring programmers tend to base their decisions on what the candidate knows rather than on the name of the degree.)

In general, I would strongly urge you to resist the impulse to wedge yourself into a combined concentration that does not quite fit your real educational objectives simply because of the attraction of gaining an extra word or two on the diploma. In doing so, you may lose something precious: freedom and flexibility. As a combined concentrator you are bound by the requirements imposed by both fields, you must write a thesis, and the thesis must be in the area acceptable to both departments. You lose the privilege to pick and choose with greater independence among the courses in both fields. If you wish to change your course program, you must gain the approval of both departments.

A more venal reason for approaching combined concentrations with skepticism is the way honors are determined; the "min" rule means that you cannot possibly raise your honors by doing a joint concentration.

In practice, the following is a common experience: a student enters a joint concentration as a freshman, but by the time she is a junior or senior, she has developed a deeper understanding of both fields and chooses to focus her efforts, and her thesis research, in one of them, and changes her concentration to one field or the other. Of course, nothing has been lost in this case by pursuing the joint concentration for a year or two, except possibly some scheduling flexibility; and some knowledge of the other field has been gained. But as a practical matter, there are many more sophomore joint concentrators than seniors. One or two students graduate each year with joint degrees in computer science and another field (usually mathematics or psychology, but occasionally physics, linguistics, or visual and environmental studies, and on rare occasions music or philosophy).

Part II. Resources and Opportunities

This part of the handbook describes some programs, organizations, and facilities that are of interest to undergraduate computer scientists, whether or not they are computer science concentrators.

The Undergraduate Computer Science Mailing List

A mailing list of computer science concentrators is maintained and used for announcements of general interest, typically concerning:

  • Notices of office hours, deadlines, changes in concentration requirements, and other matters of importance to concentrators.
  • Announcements of new courses, changes in meeting times or descriptions of courses, and introductions of new faculty.
  • Announcements of fellowships and research opportunities of special significance to computer scientists, whether from inside Harvard or from outside organizations.
  • News items, for example about significant equipment acquisitions or honors accorded our faculty or students.
  • Job openings. Prospective employers, term-time and summer, often contact our office in search of technically trained students; we simply reprint what they supply us in the way of prose, addresses, and phone numbers. So, we cannot generally speak to the accuracy of the ads or the desirability of the jobs.
  • Announcements and abstracts of colloquia (more on this below).

All concentrators are automatically added to this mailing list, which is maintained by Patricia Ryan (ryan@seas.harvard.edu).

If you have an item that you think would be appropriate for distribution, please send it to the Director of Undergraduate Studies.

Colloquia

Almost every week, one or more speakers give public talks about work in computer science that is going on elsewhere. Some of these speakers are faculty from other institutions, some are engineers from industry or from government laboratories. Sometimes (especially when we are looking over candidates for junior faculty positions), these speakers are young and have recently completed PhDs; hearing them will give you an idea of what a PhD thesis project might look like. Occasionally, we will have a very senior and distinguished lecturer, who may give a talk designed for a broad audience.

These colloquia are a wonderful opportunity for undergraduates as well as graduate students to get a feel for what is going on in the world of research and development in computation. Like the interests of our faculty, the talks cover a great range of subjects, from natural language understanding to processor architecture to rendering of graphic images to the logical properties of mathematical systems. Titles and paragraph abstracts of these talks are forwarded to the Undergraduate CS mailing list and are posted in the bulletin boards in Pierce and Engineering Sciences Lab. You should not feel that you need to understand the abstract in order to attend the talk! Most attendees at the talks get at least partially lost. But just listening to the arguments with the audience is instructive!

Talks are usually held in Maxwell Dworkin G-115 on Thursdays at 4 PM. Talks are preceded by ice cream at 3:30 PM. Even if you do not attend the talk, feel free to come to the ice cream break and speak with faculty, students, and other attendees from inside Harvard or the Boston area. Many interesting arguments can be overheard at these events, and many long-term relations get cemented through introductions and meetings at such occasions.

The Association for Computing Machinery (ACM)

The Association for Computing Machinery is the principal society of computing professionals. It publishes many periodicals. The Communications of the ACM has many easy-to-read articles of general interest; it is also the standard place for advertisement of academic positions in computer science. Computing Surveys has broad summary articles on various topics that are often good sources of introduction and overview to recent research. You can look over these publications in the library.

ACM also sponsors many professional conferences, a big national conference called the ACM Computer Science Conference, and various important specialized conferences such as the ACM Symposium on Theory of Computing ("STOC"), usually held in May, and the ACM Computer Graphics Conference (usually held in midsummer). These conferences issue proceedings containing rapid reproductions of the papers presented at the conferences; indeed the custom in computer science is for the conference papers to be submitted in advance and for the proceedings to be delivered to each conference attendee at the beginning of the conference.

A very inexpensive student membership to ACM is available ($25 for a year, I believe). This is a good deal if you have any curiosity about the field at all. It will get you some publications and will get you on the mailing list for some interesting junk mail. Also you will have the opportunity to join the "Special Interest Groups" that sponsor the specialty conferences mentioned earlier; these "SIGs" put out newsletters which your membership entitles you to receive. Most graduate students and faculty belong to at least one or two SIGs in their interest areas. The newsletters in particular give one a feel for the sociology of the field.

When a conference is held in the Boston area, or near your home over the summer, it is very much worthwhile to try to attend. Often there are reduced-rate registrations for students. The Communications has a calendar listing them all.

Harvard has a student Chapter of the ACM which can work with the national organization to help bring in interesting speakers and provide other services to students. If you are interested in helping to organize the ACM student chapter, send e-mail to the Director of Undergraduate Studies.

Programming Team

The ACM sponsors an international programming competition, of which the final round is held in conjunction with the ACM Computer Science Conference in February. About two dozen teams qualify for the finals, and they are selected on the basis of regional competitions held during the fall. Teams consist of three students; each team is given about ten programming problems, about five hours to solve them, and a single computer to work with. For the last eight years Harvard has advanced from the regional competitions to the finals, and in 1993 we won the international competition. Our great success in this enterprise is a matter of local pride!

Team members are selected after an internal competition held early in the fall, usually organized by the ACM chapter head and any members of the previous year's team who have not already graduated. The competition is announced to the CS undergraduate mailing list. You do not have to be a computer science concentrator to enter. If the team reaches the international arena and qualifies for the all-expenses-paid trip to wherever the Computer Science Conference is being held, all team members must join the ACM. For further information, see /cs/acm-contest/. Once again, contact the Director of Undergraduate Studies if you want to get special notice of the runoffs.

Mathematical Contest in Modeling (MCM)

This is a different kind of contest. Teams are given a choice of two somewhat underspecified problems in which mathematics is to be used to represent a complicated real-world situation and asked to develop methods to make predictions or choices. Generally some programming and simulation is required, but some use of mathematics to describe the problem is also needed. Teams consist of three students but the problems are solved "at home" over a weekend on an honor system and mailed to the contest judges.

Computer Science can enter two teams; the Mathematics Department can also enter two teams. For more information, see MCM home page.

Harvard Computer Society (HCS)

The HCS is the principal undergraduate organization providing informal peer support and information concerning computing and networking. It can be reached at info@hcs.harvard.edu. Though its officers are often computer science concentrators, it is not tied to the academic programs in computer science. It publishes the very valuable booklet Computers@Harvard, which is usually distributed at registration.

USENIX

Harvard also has a USENIX student representative on Campus. Our current representative is Aaron Mandel (aaron@eecs.harvard.edu). He has information about upcoming USENIX events (workshops and conferences), information about student stipend programs, and copies of all USENIX proceedings. In addition, USENIX sponsors a number of student programs:

  • Undergraduate Software Projects fund students to perform the software engineering necessary to take course-project software to a completed software package. Please note the deadlines for proposal submissions.
  • Research Grants and Scholarship Programs fund students and student research projects. Please note the deadlines for proposal submissions.
  • Best Student Paper Awards are cash prizes awarded to best papers by students at USENIX conferences.
  • Student Stipends provide funding for students to attend USENIX events.
  • Student Fees provide very low registration fees for full-time students to attend USENIX technical sessions and tutorials.
  • Student memberships at reduced membership fees allow students to join the advanced computing community and receive all USENIX member benefits.

The USENIX scholastic committee can be reached at <scholastic@usenix.org>.

Women in Computer Science

Women are drastically under-represented in computer science, both nationally and at Harvard. Fortunately, there are two women professors in computer science at Harvard, Barbara Grosz and Margo Seltzer, and a significant number of women graduate students, who have worked with women undergraduates to encourage their interest in the field. To find out more about this group, contact Professor Seltzer (margo@eecs.harvard.edu).