Syllabus

This course lies at the core of computer science and aims to teach you effective ways to represent data and to develop and implement most important computer algorithms in use today. You will learn how the choice of data structures and algorithm design methods impacts the performance of your code. This course will also make you proficient in C++ and solidify your Object Oriented Design concepts.

Credits: 4
Lectures: MWF 4th period (10:40 am - 11:30 am) @ TUR L005
Discussion: T 8th period (3pm - 3:50pm) @ CSE E220 for section 1079 and M 9th period (4:05pm - 4:55pm) @ TUR 2319 for section 6723

Instructor: Manu Sethi (Office hours: Tue, Fri, 5-6 pm) @ E 309

Teaching TAs:
Ravi Jampani
(Office hours: Tuesday: 9th, 10th; Thursday: 8th, 9th,10th; Friday: 8, 9th)
Tao Li (Office hours: Tuesday:  9th and 10th; Wednesday: 9th and 10th; Thursday: 9th, 10th, and 11th)
Eyup Ayaz (Office hours: Monday: 4th, 5th and 6th; Wednesday: 4th and 5th; Friday: 4th and 5th )
Grader:
Menghan
(Office hours: Tuesday 7th period)
Emails for the instructor and all the TAs: {msethi , rjampani , tali , ayaz} @ cise.ufl.edu.
Office Location for instructor and TAs: E 309, CISE department.

Although the email addresses of the course staff are mentioned below but all queries related to the HWs and course content will be answered only on piazza.com. Make sure you make an account on piazza.com. The system is highly catered to getting you help fast and efficiently from classmates, the TAs, and the instructor. Find our class page and sign up at:  piazza.com/ufl/spring2012/cop3530. This would be the only means of communication between you and us. All anouncements will also be made only through piazza. So, register ASAP to avoid missing any important information. 

 

Official Prerequisites: Strong programming skills, discreet math (COT 3100), Linear Algebra and Calculus background is required. You are NOT expected to know C++ before taking this course. However, you should be proficient in OOP concepts or Java as is taught in COP 3502, COP 3503, COP 3504.

My Prerequisites: This is a difficult and a heavy course and covers a lot of material in one semester. What we cover can be basically divided into three broad categories i.e., C++, Data Structures, and Algorithms. You are not expected to know any of this material before hand but you should have a motivation for the course material and what you are studying. For example, you should be aware that we will go over pointers and other C++ related language details in a whirlwind tour of about first three weeks. Three weeks are not less to cover C++ for experienced programmers like you but you should be prepared to code on your own any C++ concept taught in the class and also do a lot of reading on your own to internalize the material. If your OOP concepts are not strong, then you should expect yourself to work very hard to survive the course load. We will also be using a good amount of discrete math and calculus and linear algebra concepts that you have learnt in your prior courses. We will briefly talk about those in the course wherever required but its your job to hit upon your weaknesses in your prior courses and find out enough time to strengthen the material. For example, it is very easy to get overwhelmed by the programming load of the course and completely forget the theoretical details taught in the lectures. If you continue to follow this approach it is going to drastically bring down your exam scores.

Course Outline

Following is a tentative outline of the topics that we will cover during the semester. The detailed schedule should be referred to in the class activity page which will be updated regularly. We will follow the order of chapters given in the textbook. Not all material in each chapter will be covered and at some places additional material (which is not given in the textbook) wil be covered. The necesaary reading s for the ,aterial not available in the textbook will be provided on the class activity page.
  1. Introduction to C++ (9 lectures) More C++ will be interspersed throughout the course and will be covered in lectures, discussion sessions, reading and assignments.
  2. Performance Analysis, simple sort methods (1 lectures)
  3. Asymptotic Notation (1L)
  4. Lists (5 lectures) Expect more C++ to be covered here.
  5. Arrays and Matrices (1 L) (You would have covered most of this material in the C++ intro)
  6. Stacks and Queues (3L)
  7. Hashing (3L)
  8. Binary trees (4L)
  9. Priority Queues (2L)
  10. Search Trees (2L)
  11. Graphs (3L)
  12. Greedy Algorithms (3L)
  13. Divide and Conquer (3L)
  14. Dynamic Programming (5L)

 

Grading Criteria and Course Requirements

Projects: 50% (about 5 to 6 C++ programming projects weighted equally)

Exams: 50%
  • Exam 1: 10% (syllabus covered up to and including Hashing, i.e., Chapters 1 to 10) Wednesday Feb 29, 2012
  • Exam 2: 15% (Trees , chapters: 11, 12, 14, 15) Monday April 2nd, 2012
  • Exam 3: 25% (Graph Theory and Algorithms, chapters: 16, 17, 18 , 19) Final's week

Grading will be on the curve and will be determined by the class average and standard deviation of the overall score (assignments + the two exams). Apart from this the following rules will also be applied on determining your  final grade.

1. No one with an overall score < 80% will be eligible for an A. If no one gets 80% and above, nobody will get an A.
2. You get an F if you don't appear for any exam.
3. You get a failing grade if you stop turning in assignments or do not turn in a sufficient number of assignments.
4. You will at least get the following grade if your score lies in the ranges given below:
[85 , 100] A
[80 , 85) A-
[75 , 80) B+
[70 , 75) B
[65 , 70) B-
[60 , 65) C+
[55 , 60) C
[50 , 55) C- and so forth. We may relax the grading criteria by a few points but we will never be harsher than this grading scale.

 

HW/Projects Submission and Grading policies

 

To receive full credit for your assignments the following rules have to be followed. Violation can cost up to 100% of your Assignment credit. Please read the information on the page carefully, you are responsible for the knowledge of the material put up here. If anything in this page is ambiguous, please clarify with the TA's immediately. No excuses will be entertained. 

  • Please put your full name, student ID, section, and Gator ID on every assignment. This is only way for us to know that its your work. Insert this information in every file that you submit as a commented part before the beginning of your code.

            The format is:

                        Name : XXXXXXX

                        UF ID: XXXXXXX

                        Discussion section # : %%%%%%%%%%%

           If this information is missing you get 0 credit for the assignment. 

 

  • Late HWs: The HW due date will be posted on every HW and will be followed. In no circumstances will an extension be given. Late  HWs are not allowed and strongly discouraged due to the fast pace of the course. The HWs have to be submitted BEFORE class via sakai on the due date. Any HW submitted after the class is over, or during the class will be considered late and will receive an automatic zero.

  • However, we will give you 2 grace class-days throughout the whole semester. By class days it is meant the days on which we have lectures. So, if a HW is due on Wednesday and you have not used any of your grace class-days then you can submit it till the following Monday.

  • Use your grace class-days for whatever reason you like. There will be no penalty for submitting late till the time your 2 grace class-days are valid. After that if you submit late you will get zero. Remember, not to consume them in the initial assignments itself and have nothing left for you towards the end of the semester when you will be overburdened with exams and submissions from other courses. 

    For example, if you submit your first assignment 1 class-day late, then you will only have 1 grace days left for the whole of the remaining assignments. So, use them judiciously!

  • The TAs and the instructor will stop answering any coding related questions one day before the assignment is due. This is because you will be given ample time to start your HW in time and dicuss with the TAs or the instructor. But often times it happens that students only start one day before it is due. This practice is not going to help in this course and should be abandoned. This only wastes the time of the course staff because we know that you will be not be able to finish it before the due date and will get a zero because of submitting uncompiled, unfinished and unprofessional work.
  • Graders will test your code with their programs. Mere passing of all the test cases does not ensure full credit. Even if not stated there will be time and space constraints on the implementation of the algorithm. This forms a major part of your assignment grade. Your program should run within acceptable space and time constraints. Often times we will specify these constraints in the HW specs in which case they should be exactly followed.

    Note that the TAs will compile and test your program on cise storm machine. So, before submitting you should have compiled and run your program on storm. You need to have a cise account to be able to log into storm.cise.ufl.edu.  

    Uncompiled programs or programs with compilation errors or maybe your program compiled correctly on your machine but not on the CISE storm machine, will straight away get zero points with no consideration afterwards. Uncompiled programs waste a lot of time of the TAs and are discouraged.

    After each assignment is graded, the policy and the test cases will be available online. You can download these, run them on your code that you submitted and report discrepancies if found.

    If the problem specifies the name that you should give your class, you must give your class that name, or it will cost you up to 30% of credit for that question.

  • Often, you will be asked to extend a class and include a new member function. The signature of the function must be the same as that specified by the problem. The return type, function name and the parameters passed should be the same as that specified in the specs. Violation can cost 100% of the assignment grade.

  • Each of the following is required, and if not satisfied, will result in a zero for the code portion of an assignment:

    1. Makefile, .cpp file, .h file, any other file required in the hw. The .cpp file (say, ProgramName.cpp) must compile successfully. You are required to submit a makefile with every HW. You should not include more than one makefile for a particular HW. The one makefile that you submit should be able to compile all the programs in the HW.

    2. The submitted file must be properly tarred. Improper tarring of files again can cost 100% for that assignment. The simplest syntax of the tar command is as follows.

      To create a tar file:
         tar cvf (tar file name) (file 1) (file 2) (file 3)...
      To extract the contents of a tar file:
         tar xvf (tar file name)
      For example, if you have ProgramName.cpp and readme.txt to submit for an assignment, use the following command to tar them properly into a file called MyAssignment.tar:
         tar cvf MyAssigment.tar ProgramName.cpp readme.txt

      Warning: Some platforms have the capability to add other files to a tar archive. Do not use this capability to make your tar files. To be sure, use the 'tar' command described above.

      Note: You can verify that your submission was successful by downloading your submission from Sakai and successfully untarring it.

    3. For most cases we will do selective grading. This means that we may not grade all questions for a particular HW. But you will be required to submit solutions to all the questions unless stated otherwise. Whatever question we will choose to grade will be the same for all the students. The HW grade will in most cases rely on only the questions that we choose to grade. We will not declare before the HW due date which questions we have decided to grade. We will also not provide any solutions to the HW. The solutions are not required as the HWs are actually programming projects and we will not ask you to write programs in the exam. However, you should be clear with all the algorithmic details and theoretical details asked in the HWs and as desired in writing conceptual programs, before appearing for the exam. If you need more practice you can look into previous years websites where you may find some solutions. If you find a similar question in the past semesters' HW being given this time you should not look at its solution as this will constitute academic dishonesty.

  • No copying of assignments is allowed. Please look at the Academic Dishonesty policy. We will run MOSS on your assignment, and view cases of cheating seriously. We have fed previous years solutions, submitted assignments by students into MOSS and we will compare your codes with those.

Textbook

The required textbook is Data Structures, Algorithms and Applications 2/E by Sartaj Sahni. It is available as a free ebook from UF library. For more details see the Resources page.

 

Attendance:


Not required, but strongly recommended. It is your problem if you miss the material. Do not expect the instructor to cover it again for you. C++ will be discussed in the first few classes and in the discussion sections. 

Make up exam policy:


Make up will only be given under extenuating circumstances. You will be required to provide a proof justifying the exception.

Passing grade:

A C- will not be a qualifying grade for critical tracking courses. In order to graduate, students must have an overall GPA and an upper-division GPA of 2.0 or better (C or better). Note: a C- average is equivalent to a GPA of 1.67, and therefore, it does not satisfy this graduation requirement. For more information on grades and grading policies, please visit http://www.registrar.ufl.edu/catalog/policies/regulationgrades.html 

 

Honesty Policy


All exams, projects, and work sheets are to be done individually.  Any copying or inappropriate assistance on an assignment will be treated in accordance with UF policies. 
All students admitted to the University of Florida have signed a statement of academic honesty committing themselves to be honest in all academic work and understanding that failure to comply with this commitment will result in disciplinary action. This statement is a reminder to uphold your obligation as a UF student and to be honest in all work submitted and exams taken in this course and all others.

Accommodation for Students With Disabilities


Students Requesting classroom accommodation must first register with the Dean of Students Office. That office will provide the student with documentation that he/she must provide to the course instructor when requesting accommodation.

UF Counseling Services:


1.Resources are available on-campus for students having personal problems or lacking clear career and academic goals. The resources include: 
- University Counseling Center, 301 Peabody Hall, 392-1575, Personal and Career Counseling. 
- SHCC mental Health, Student Health Care Center, 392-1171, Personal and Counseling. 
- Center for Sexual Assault/Abuse Recovery and Education (CARE), Student Health Care Center, 392-1161, sexual assault counseling. 
- Career Resource Center, Reitz Union, 392-1601, career development assistance and counseling.

Software Use:


All faculty, staff and student of the University are required and expected to obey the laws and legal agreements governing software use. Failure to do so can lead to monetary damages and/or criminal penalties for the individual violator. Because such violations are also against University policies and rules, disciplinary action will be taken as appropriate. We, the members of the University of Florida community, pledge to uphold ourselves and our peers to the highest standards of honesty and integrity. 

Course Registration Requirements


In order to take this course, sit in on the course, or complete an incomplete of this course every student must be officially registered in either the normal fashion or through the auditing process.  Any student not officially registered is in violation of UF policy and subject to the penalties set forth by the University.

Disclaimer


This document is subject to change at the discretion of the instructor, based on unforeseen circumstances occurring during the semester.