CMPSC 130A (Summer 2013)
Data Structures and Algorithms

Professor Teofilo F. Gonzalez
Department of Computer Science
University of California, Santa Barbara



  • Prerequisites and Admission

  • CMPSC 40; CMPSC 32 or (CMPSC 20 and 60); PSTAT 120A or ECE 139; open to computer science, computer engineering and electrical engineering majors only.

  • Admission
  • Undergraduate Non-CS Majors (except EE & CE & Creative Studies (CS emphasis) who meet the prerequisites) must PETITION through the CS Department to register in CS 130A. This course is not open to CS or CE Pre-Majors. You could receive an automatic F- if you are a student who must PETITION through the CS Department to enter CS 130A, but did not PETITION to register in CS 130A. If you do not have the prerequisites, you must drop the course as otherwise you may receive an automatic F-. Note: Petitions to register in this course by CS, CE, and by non-CS majors that do not satisfy the course prerequisities are always denied. The rules for graduate students are different.

  • E-mail CSIL Computer Account, and CSIL Access

  • I sent you e-mail through the e-mail address provided by the Registrar's office (umail account). It is important that you check your e-mail on that account regularly or add a forwarding instruction so that you receive your e-mail in an account your read regularly. Course announcements and the partial grades will be distributed through your umail account. You will need a CSIL computer account (or CSIL Access for non-CS majors with COE accounts) for this course. For students with COE accounts the CSIL access has been provided automatically. For CS Majors your previous CSIL account was activated automaticaly (same userid and password). If this is not done automaticaly or if you do not fall into the above categories, please get a COE account through this link (or the tab "Getting Started" in the page CSIL Tech. Support and Information). If all of this fails please go to the CS Office (2104 Harold T. Frank Hall) and ask the Staff to activate your CSIL access or CSIL account because you are taking CS 130A. The COE Computer Accounts (which handles the CSIL accounts) periodically cancels accounts. If this happens to you please go to the CS Office to get your account reinstated. If the CS office is closed send me e-mail (with copy to the TA and support@cs.ucsb.edu) indicating that this has happened and we will try to get it reinstated as soon as possible. Sometimes the COE sends you e-mail to your CS account warning you that if you do not change certain feature (password, disk space, etc.) then your account will be closed. So you need to READ your CS account mail at least every day. You may do this with the command "pine" or you may create a .forward file that will automatically forward your CS mail to your umail.ucsb.edu account. More information about mail and .forward files can be found in the FAQs in CSIL Tech. Support and Information.

    Go To Top

  • Assignments

  • There will be one programming assignment (programming project). It will be due on Monday July 29th. The code for the Programming Assignment must compile and execute in the LINUX PCs in the CSIL Lab. The code must be in G++. JAVA IS NOT ALLOWED. JAVA IS NOT ALLOWED. JAVA IS NOT ALLOWED. In the past, students have used C++ on their PCs, and then transfer their code to the LINUX Unix PCs. This process is acceptable. However, we must warn you that C++ compilers are not 100% compatible, and your code might work on your PC (even under LINUX), but not in the LINUX PCs. So if you follow this approach, make sure that you leave some time to debug your code on the LINUX PCs, even if the program works correctly on your PC. We can only compile and run your code on the LINUX PCs in CSIL. We can only compile and run your code on the LINUX PCs in CSIL. There will be about 10 individual assignments. They will be assigned during a lecture and will have as deadline the next lecture (or discussion session). You will receive a grade for each of these assignments, but not all the assignments will be graded carefully. Also, it may be that some individual assignment points will be redistributed among group projects held during discussion sessions. Some assignments will have a due date and a deadline and ohters just a deadline. If you hand them in after the due date, then 8% of the total points the FULL ASSIGNMENT is worth (not just the part that is late) will be automatically deducted each day (rounded up) the assignment (or part of the assignment) was late (excluding Saturdays, Sundays and University Holidays). Assignments will not be accepted after their deadline.

    Go To Top



  • Exams

  • There will be four quizzes, a mid-term exam, and a final exam. The quizzes will be held during part of the lecture on (Thursday) June 27th, (Wednesday) July 3rd, (Thursday) July 11th, and (Thursday) July 25th. The mid-term exams will be held during the lecture period on Thursday July 18th. The final exam will be held from 2 - 5 PM on Thursday Aug. 1th (tentative). All of the exams are closed book and notes. However you are allowed to bring one 8.5" by 11" page (you may write on both sides) with notes to the examinations. The exams and quizzes will be based on all the material covered up to the time of the quiz or exam in the lectures and discussion sessions. There will be no makeup exams. There will be no makeup exams. There will be no makeup exams. In the past 38 years there have been very few exceptions to this rule.

    Go To Top



  • Grading Policy

  • The weights for the assignments and exams are given below.

    Assignment/Exam Number Points
    Individual Assignments Many 160
    Programming Project 1 160 each.
    Quizzes 4 120 (about 30 each)
    Mid-Term Exam 1 190 each
    Final Exam 1 370

    To make the project count a little bit more, we always include in the final exam a couple of questions from the project.

    There will be no incomplete grades, there will be no incomplete grades, there will be no incomplete grades, and there will be no incomplete grades. The Statue of Limitations for any grading is a week or the day of the final exam (whichever comes first). I.e., if there is an error in the grading, it must be settled within a week of the time the assignment or exam was returned and before the final exam. If you have any questions about the grading, see the TA. If you cannot reach an agreement, please see the instructor. Only letter grades will be given, i.e., A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F+, F and F-.

    The grades are normally computed as follows: First we consider all students in the class and everyone receives a tentative grade. For graduate students this tentative grade is their final grade. Then the undergraduate students receive their final grade by considering ONLY the undergraduate students in the class. Normally, students with the average number of total points receive a C+ or B-. It will in the B- range (or slightly higher) if the students are active participants in class and almost all of the students show up for class during the whole quarter, but in the C+ range (or lower) if the students are not active participants. Very few students receive the total (or close to the total) number of points in my exams, but about 25% of the students receive full credit for their programming project. The quizzes are much simpler than the exams, so students tend to do better.

    All the individual assignments, quizzes, exams and the programming project must be done INDEPENDENTLY. Why work independently? Because quite of bit of the learning process for this course is learning by doing (proving, analyzing, trying, etc.) and the skills you will develop will not only help you solve problems in this course, but they will also help you solve problems in the future. To motivate you into working independently we will recycle up to 40 points that you loose in the individual assignments and in the programming project. We will recycle these points in the final exam. This is done as follows. Suppose that there are a total of 360 points in the recycable assignments. Then, if the total number of points that you earned in the recycable assignments is 335, then the MINIMUM of (360 - 335) and 40 points will be assigned to the final exam. In this example the final exam will be worth 25 extra points. So, if in the final exam you earn 80% of the points the final is worth, you will recover 80% of the points lost in the recycable assignments, which is 0.8 * 25 = 12. If the above rule does not motivate you to work independently and we can prove that two or more students solved together an assignment (individual assignment or programming project) or part of an assignment, the case will be reported to the appropriate administration officials. You are allowed to study in groups and you may discuss the homework problem with other people in order to fully understand the problems you are being asked to solve in the homework; however, you may not SOLVE the assignment or any part of the assignment or the exams in groups, and you may not ask anyone how to solve any particular problem or subproblem in a homework assignments. If we can prove that two or more students solved together an assignment (exam or project) or part of an assignment (exam or project), the case will be reported to the appropriate administration officials.

    Go To Top



  • Student Services

  • Campus Learning Assistance Service: 893-3269. CLAS helps students increase their mastery of course material through academic skills development. Their web site is www.clas.ucsb.edu.

    Counseling & Career Services: (893-4411, www.counseling.ucsb.edu) offers counseling for personal & career concerns, self-help information and connections to off-campus mental health resources.

    Disabled Students Program: 893-2668; www.sa.ucsb.edu/dsp DSP provides academic support services to eligible students with temporary and permanent disabilities. Please inform (Prof. Gonzalez) if you require special classroom accommodations due to a disability. You must register with DSP prior to receiving these accommodations.



  • Policy on Academic Integrity (from M. Turk)

  • The university, the department, and this instructor all take the issue of academic integrity very seriously.  A university requires an atmosphere of mutual trust and respect.  While collaboration is an integral part of many scholarly activities, it is not always appropriate in a course, and it is never appropriate unless (1) explicitly allowed and (2) due credit is given to all participants in the collaboration.  This goes for both ideas and programming or other work.

    The university labels each of the following activities as academic misconduct:

    • Cheating. Whether on exams or homework assignments, this includes copying the work of other students, and asking or allowing another student to do your work.

    • Plagiarism. Also known as "academic theft," it refers to the use of another's ideas or words (or source code) without proper attribution or credit.

    • Collusion. "Any student who knowingly or intentionally helps another student to perform any of the above acts of cheating or plagiarism is subject to discipline for academic dishonesty. There  is no distinction between those who cheat and plagiarize and those who willingly allow it to occur."

    The following are examples of violations of academic conduct (this list is not inclusive):

    • Working together (that is, actually writing the computer code) with another student.
    • Showing any portion of your code (no matter how small) to another student.
    • Viewing any portion (no matter how small) of the code of another student.
    • Copying any portion, no matter how small, of another student's code for use in your program.
    • Modifying another student's work to make it "your own."
    • Sharing solutions in the form of pseudocode.
    • Asking a fellow student to help you find a bug in your program, or to help you write any portion of your program, no matter how small.
    • Using the Internet or Library to seek explicit solutions to programming projects.
    • Knowingly allowing any of the above to take place.

    The following is a description of allowed forms of seeking help with a programming assignment (this list is not inclusive):

    • Discussing your project with your TA, professor, a CS tutor, or the email help-desk.
    • Discussing the general ideas of solving the project, or relevant lecture and textbook materials, with a friend or fellow student.
    • Using the Internet or Library to read about the general principles that apply in the project.

    For some views on academic integrity at UCSB, please see:

    Any act of cheating will result in an "F" for the course and a report to the associate dean of students. This includes any sharing of computer code.

    Summary: Academic integrity is absolutely required - dishonesty (cheating, plagiarism, etc.) benefits no one and will not be tolerated! If you are not sure whether or not something is appropriate, ask the instructor or a TA beforehand. (Don't try the "I didn't know" route.)

     

    Go To Top



  • Required and Reference Books

  • [AHU] Aho A., Hopcroft J. and Ullman J., "Data Structures and Algorithms", Addison-Wesley, Reading, Mass. (1983). QA 76.9 / D35 / A38

  • [CLR] Corman, T., Leiserson, C. E., and Rivest, R. L., "Introduction to Algorithms," McGraw Hill, 1990. QA76.6 / .C662 / 1990

  • [HS] Horowitz, E., Sahni, S. , and Rajasekaran, S., "Fundamental of Computer Algorithms in C++," Computer Science Press, (1997).

  • [KR] Kernigham, B. W. and D. Ritchie, "The C Programming Language," Prentice Hall, 1978. QA 76.73 / C15 / K47

  • [S] Sedgewick, R. "Algorithms," Addison-Wesley 1983.

  • [Sa] Sahni, S., "Data Structures, Algorithms and Applications in C++," 2nd Edition, 2005. http://www.cise.ufl.edu/~sahni/dsaac REQUIRED TEXTBOOK

  • [St] Stroustrup, B., "The C++ Programming Language, 2nd Edition," Addison-Wesley, Menlo Park, CA (1991). (QA76 / 73 / C15 S79)

  • [K] Knuth, D. E., "Sorting and Searching: The Art of Computer Programming," Addison-Wesley, Menlo Park, CA (1973). QA 76.6 / K64 / v.3

  • [W] Weiss, M. A., "Data Structures & Algorithm Analysis in C++," Third Edition, Addison-Wesley, (2006). REQUIRED TEXTBOOK
  • Go To Top