logoISU  

CS202 - Data Structures and Algorithms

Fall 2020

Syllabus and Information

Table of Contents

Table of Contents
General Information
Contact Your Instructor
Lecture, Exam, Office Hours
Prerequisites
Standard text
LockDown Browser + Webcam Requirement
Course Announcements
Classroom conduct
Course Description
Course Outline
Learning Outcomes
Grading and Assignments
Late Homework
Start Homework Early
Expected Amount of Work
Grade Cutoffs
Blackboard
Lectures (using Zoom)
Office hours (using Teams)
Online
CS Course Policies
COVID-19 Information
Academic Integrity
Special Needs
Disclosures Regarding Sexual Misconduct

General Information

Contact Your Instructor

Name: Jeff Kinne
Email: jkinne@cs.indstate.edu
Office: Root Hall A-140D and in Teams
Office: 812-237-2126
Instructor Office Hours: Monday-Thursday 11am-noon, 2-3pm (see syllabus for how office hours will work)

Lecture, Exam

Lecture: MTWR (section 001) MW 3-3:50 and TR 3:30-4:20 (section 001) in Root Hall. See syllabus for information on joining lectures by Zoom or watching recordings A-019
Exams:

GA Tutoring: We have a few graduate assistants who are available to help students in beginning computer science courses. The lab is currently available online or by appointment. Please see https://cs.indstate.edu/wiki/index.php/Unix_Lab_and_Help for details. The lab hours are in a calendar on the CS homepage, at http://cs.indstate.edu/info/index.php#lab_hours. You can join the lab when working your programs. You can ask the lab assistants to look at your programs, and you can work with any other CS students that are there (you could use the lab as a regular meeting place to work with your classmates).

Prerequisites

C or higher in CS 201

Standard text

Recommended - The C Programming Language, Introduction to Algorithms, TutorialsPoint - Data Structures and Algorithms

LockDown Browser + Webcam Requirement

See http://cs.indstate.edu/~sbaker/cs256/syllabus.php#rs. This lockdown browser will be used for taking quizzes and tests.

Course Announcements

Announcements regarding the course will be made both during class and via email to your @sycamores.indstate.edu email address. You should regularly check this email account or have it forwarded to an account that you check regularly. You can set the account to forward by logging into your indstate.edu email from Internet Explorer (the "light" version of the webmail client that opens up from Firefox or Chrome does not give the option to forward email).

Classroom conduct

You may not use cell phones, iPods/music players, etc. during class. You should be civil and respectful to both the instructor and your classmates, and you should arrive to class a few minutes before the scheduled lecture so you are ready for lecture to begin on time. You may use your computer during class if you are using it to follow along with the examples that are being discussed. You may not check email, Facebook, work on other courses, etc. during class.

Course Description

The catalog description for this course is: This course is a continuation of CS 201. It involves a deeper study of algorithm design and analysis and data structures. Students are able to choose the best data structures and algorithms to solve a problem and implement the solution in code. Students also practice programming in a variety of settings, which may include - parallel programming, network programming, graphics, security, and data science.

Most important prerequisite skills/knowledge: basic programming concepts, ability to use unix.

Most important skills/knowledge gained: C programming and debugging, data structures understanding (can explain lookup/insert/delete for each DS, work small examples on paper, know running times) and coding (can finish partially complete DS code, write new functions to traverse DS).

Course Outline

  • C programming
    • Know all keywords, competent using most commonlly used
    • Commonly used library functions - I/O, math, curses
    • Data formats, including floating point, 2's complement, integer sizes
    • Memory organization, static versus dynamic memory, stack/heap/code/globals
    • Preprocessor, compiling, compile flags, debugger
    • Programming assessment questions
    • Review/practice - searching and sorting
  • Data structures review, in C
    • Sorted/unsorted array, linked list (stack/queue), binary tree (balanced and not balanced), hash table, heap
    • Asymptotic running time - terms, rules of thumb
  • Graphs
    • Terms/concepts, algorithms, basic programming
  • Algorithms
    • Techniques - brute force, divide and conquer, greedy, heuristic, dynamic programming / memoization
  • Object-oriented programming
    • In Python or C++ - terms/concepts, libraries for data structures
  • Class project
    • Options - games, covid-19, or what?
  • Other data structures
    • Some combination of - B/B+ trees, skip list, trie

Learning Outcomes

  • C programming - complete knowledge of the language - can take a specification and produce correct code, can take existing code and make changes/updates, can correctly solve all easy/medium autograded problems and a large number of hard problems, good working knowledge of "functions every citizen should know" and other C standard library functions.
  • Memory and disk - complete understanding of how C organizes memory (code, data, stack, heap) and implications for efficiency, program correctness and security. Good working knowledge of ext2 disk organization - inodes, superblocks.
  • Object oriented programming - moderate knowledge of OO programming in some language and use of builtin data structures in some language - can use the proper objects for different purposes (including for efficiency), and develop an OO framework to solve a problem including proper relation between classes, can correctly solve all easy/medium autograded OO problems and a large number of hard problems.
  • Developing on Linux - good working knowledge of GNU make and gcc/g++ and able to correctly develop makefiles and use compiler options.
  • Basic data structures - complete mastery of basic data structures (arrays, linked list, stack, queue, binary tree, hash table, heap / priority queue, set) - can write the code for methods and properly use the appropriate data structure in different situations.
  • More data structures - good working knowledge of additional data structures covered in class (e.g., skip list, trie, AVL tree, red black tree, B tree), can decide on the best for different situations and correct analysis of efficiency.
  • Algorithms - good working knowledge of algorithms for data structures and basic algorithms techniques (brute force exhaustive search, greedy, dynamic programming, randomized) and basic graph algorithms (DFS, BFS, shortest path, MST).

Grading and Assignments

The students of this course have the following responsibilities: read assigned readings before lecture, attend lecture (online or in person), complete homework assignments, take in class quizzes, take exams, and possibly complete a project. The final grade consists of:

  • Quizzes: 25% total. There should be a quiz approximately once per week. By default you will be allowed a 1 page cheat sheet on quizzes. Otherwise, you are not allowed to use your phone, a calculator, other people, or anything else.
  • Homework: 25% total. There will be a homework assignment most weeks. The total of all homework assignments is worth 25% of the final grade. If you get behind you should still complete the assignments (because that is the primary way learning happens), and I will give late credit up to a certain date.
  • Exams: 50% total. If we have three exams they will be worth: exam1 worth 10% of the total grade, exam2 worth 15% of the total grade, final exam worth 25% of the total grade. If it helps your grade to drop either (a) just exam1, or (b) both exam1 and exam2, then that will be done.
  • Class Attendance/Participation: 0% total. TBD

Note that according to the CS course policies, as part of this course you will take the CS programming assessment. If you do not pass the CS programming assessment you cannot earn a C or higher in this course. If you do pass the CS programming assessment you are extremely likely to earn a C or higher.

Late Homework

All homework assignments will be given a preferred due date. Assignments can be turned in past the preferred due date, but any assignments turned in late will have their value multiplied by 80% (so the highest grade you can get on a late assignment is 80%). Any assignment discussed in depth in class are effectively closed and no credit will be given.

Start Homework Early

I suggest attempting a homework assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Many of the homework assignments require thought and problem solving, which takes "time on the calendar" not just "time on the clock". By that I mean that spending an hour on 3 consecutive days is likely to be more productive than trying to spend 3 hours at once on the assignment.

Expected Amount of Work

My expectation is that an average student will spend about 10 hours OUTSIDE of class each week (that is in addition to class time) WORKING PRODUCTIVELY/ EFFICIENTLY (not just staring at the computer) to complete their coursework for this class. Some students may spend less time than this, and some students will spend more.

This is the foundation for the rest of CS, so it definitely pays off to do your best here. Note - this is your most important class, by far (for CS majors).

Note - your classes should be more important than your part-time job.

Grade Cutoffs

Homework assignments and exams are designed so that a standard cutoff for grades will be close to what you deserve. After the first exam I will create a grade in Blackboard called "Letter Grade" that is what your letter grade would be if the semester ended today. Initially, I will assign the following grades: 93-100 A, 90-93 A-, 87-90 B+, 83-87 B, 80-83 B-, 77-80 C+, 73-77 C, 70-73 C-, 67-70 D+, 63-67 D, 60-63 D-, 0-60 F

My goal is that the different grades have the following rough meaning.

A+/A
You understand everything and probably could teach the course yourself.

B+/A-
You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.

C/C+/B-/B
Some things you understand very well and others you don't (more towards the former for a B and more towards the latter for a C).

D-/D+/C-
You did put some effort in, and understand many things at a high level, but you haven't mastered the details well enough to be able to use this knowledge in the future.

F
Normally, students that get an F simply stopped doing the required work at some point.

Blackboard

The course has a blackboard site. Click https://blackboard.indstate.edu/ to go to blackboard. You should see this course listed under your courses for the current term. The blackboard site is used for giving you your grades, for quizzes/exams, and for getting to online lectures (which are done using Zoom). Announcements will be sent through blackboard and to your university email. Links and such will be kept on this website.

Lectures (using Zoom)

Lectures will be streamed and recorded using Zoom. You can choose whether you will normally attend in person or online. If you are enrolled in the 301 section of the course you can watch recorded lectures later if needed according to your schedule; if you are in the in person sections you need to either attend in person or join on Zoom during the regular lecture time. Note that attendance will be taken. There is a field in "My Grades" in blackboard that indicates whether you have chosen to normally attend in person, online, or half and half. Plese go to blackboard for this course, click on My Grades (which might be under Tools if you don't see it as an option on the left menu), and check that I have the correct setting for you.

For ISU's links to information on getting started with Zoom, see https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/ArticleDet?ID=109823. You will get to the lectures for this course by going to Blackboard for this course, and click on "Zoom - for lectures" on the lefthand menu (or click on Tools and scroll down to Zoom). Once there you should see a schedule of lectures and be able to view recorded lectures. Note that you should install the Zoom application for your computer, and you will need to be logged into to Zoom with your ISU credentials to be able to connect. Also note that the lectures are recorded and only available to those in our class.

Office hours (using Teams)

Office hours will be through Microsoft Teams by default. If you would like to meet in person you should reserve an appointment using http://cs.indstate.edu/scheduler to reserve an in person meeting with Jeff Kinne. For meeting through Teams, you should start Teams in your browser or start the application. You should be logged in using your ISU credentials. Once you have Teams open you can message me to ask me questions or to ask to talk. We can use Teams to message (better than emailing back and forth repeatedly if you have questions about something that you just want to write about) or to talk and share screens (e.g., to take a look at your code). I normally have Teams open on my computer all of the time, including during my office hours. During my office hours I will normally reply right away; at other times I will reply when I get a chance.

Participating online

If you are participating online, please see the information at https://www.indstate.edu/fcte under the heading/link "Student Resources". You are expected to either join lectures live through Zoom or watch the recordings once they are available. You will complete assignments, quizzes, and exams on the same schedule as the rest of the class. For quizzes and exams you will normally have a 24 hour period during which to take the quiz/exam (note that different students will have slightly different questions and any communication between students about quiz/exam content is academic misconduct).

CS Course Policies

Note that this course follows all standard CS course policies. In particular, (a) cheating/plagiarism by graduate students results in an F in the course, (b) missing 20% of the classes results in an F for any student, and (c) there will be no makeup exams. See http://cs.indstate.edu/info/policies.html for details.

COVID-19 Information

Information specific to CS courses - https://cs.indstate.edu/wiki/index.php/Covid-19#Course_Policies.

Information specific to this course -

Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...

Illness: Students who are ill, under quarantine for COVID-19, or suspect they are ill will report that to Student Affairs. Student Affairs will verify and notify all faculty who have that student. Once notification is made, all faculty will make every reasonable effort to accommodate the student’s absence and will communicate that accommodation directly to the student. Students who need to report an illness should contact Office of the Dean of Student at the following website https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=23 . They may also call: 812-237-3829.

Masks/Shields: Masks/Shields will be worn by all students and faculty in classrooms as well as in buildings (unless you are alone in an office). What is said/printed on a mask will be held to the same Student Code of Conduct standard as if it were printed on a shirt or hat. As a result, a political statement such as MAGA, BIDEN2020, or BLM is not grounds for demanding that it be removed/replaced. In judging what constitutes an offensive statement on a mask, the determination will be made by Student Affairs using the Student Code of Conduct. If there is a question about a mask, the faculty member will refer the matter to Student Affairs and only insist upon its immediate removal if there is no doubt that it violates the Code. Medical waivers will be made through Student Affairs and students with such a waiver are expected to carry the documentation with them and present it when asked.

Laptops/Technology: It is the responsibility of all students to have equipment sufficient to participate in all their classes. All students must have a computer/tablet with audio and video capability. Students will follow the appropriate instructions of their faculty regarding the muting (or unmuting) of audio and video as they would in any classroom setting.

Traffic flow and social distance: Students and faculty will respect the need for social distancing to the degree possible by the setting. Faculty and students will move in and out of the classroom as per the appropriate instructions of the faculty/administration. They are expected to follow printed traffic flow statements posted in all rooms and buildings.

In-class seating: Faculty are asked to assign students seats in the classroom, using social distancing as possible. The assigned seating chart is to be used all semester and kept by faculty as to facilitate contact tracing and help limit any secondary quarantines.

Cleaning of Space: Students are encouraged to clean the surfaces of the chairs/tables/desks they occupy before they sit down and as they prepare to leave. Faculty should advise students to bring cleaning wipes or cloths to clean their own personal space if they want or to be sure to use hand sanitizer on the way in and way out of the classroom.

Refusal: Refusal to comply with any appropriate request will be treated as would any classroom disruption (request to change the behavior; request to leave the class; dismissal of the class and referral to Student Affairs.)

Academic Integrity

Please follow these guidelines to avoid problems with academic misconduct in this course:
  • Homework: You may discuss the homework assignments, but should solve and finish them on your own. To make sure you are not violating this, if you discuss with someone, you should DESTROY any work or evidence of the discussion, go your separate ways, SPEND at least an hour doing something completely unrelated to the assignment, and then you should be able to RECREATE the program/solution on your own, then turn that in. If you cannot recreate the solution on your own, then it is not your work, and you should not turn it in.
  • Note on sources: if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.
  • Exams: This should be clear no cheating during exams. The exams will be closed-book, closed-notes, no computer, and no calculator. You may be allowed one sheet of 8.5" by 11" piece of paper with hand-written notes to use as a crib-sheet for your tests.
  • Projects: You should not copy from the Internet or anywhere else. The project should be your own work. It will be fairly obvious to me if you do copy code from the Internet, and the consequences will be at the least a 0 on the project.

If cheating is observed, you will at the least receive a 0 for the assignment (and may receive an F for the course), and I will file a Notification of Academic Integrity Violation Report with Student Judicial Programs, as required by the university's policy on Academic Integrity. A student who is caught cheating twice (whether in a single course or different courses) is likely to be brought before the All University Court hearing panel, which can impose sanctions up to and including suspension/expulsion. See the http://www.indstate.edu/sjp/docs/code.pdf and http://www.indstate.edu/academicintegrity/ for more information.

Please ask the instructor if you have doubts about what is considered cheating in this course.

Special Needs / Disability Services

Standard ISU language required in all syllabi...

Indiana State University recognizes that students with disabilities may have special needs that must be met to give them equal access to college programs and facilities. If you need course adaptations or accommodations because of a disability, please contact us as soon as possible in a confidential setting either after class or in my office. All conversations regarding your disability will be kept in strict confidence. Indiana State University's Student Support Services (SSS) office coordinates services for students with disabilities: documentation of a disability needs to be on file in that office before any accommodations can be provided. Student Support Services is located on the lower level of Normal Hall in the Center for Student Success and can be contacted at 812-237-2700, or you can visit the ISU website under A-Z, Disability Student Services and submit a Contact Form. Appointments to discuss accommodations with SSS staff members are encouraged.

Once a faculty member is notified by Student Support Services that a student is qualified to receive academic accommodations, a faculty member is obligated to provide or allow a reasonable classroom accommodation under ADA.

Disclosures Regarding Sexual Misconduct

Standard ISU language required in all syllabi...

Indiana State University fosters a campus free of sexual misconduct including sexual harassment, sexual violence, intimate partner violence, and stalking and/or any form of sex or gender discrimination. If you disclose a potential violation of the sexual misconduct policy I will need to notify the Title IX Coordinator. Students who have experienced sexual misconduct are encouraged to contact confidential resources listed below. To make a report or the Title IX Coordinator, visit the Equal Opportunity and Title IX website: http://www.indstate.edu/equalopportunitytitleix/titleix.

The ISU Student Counseling Center

HMSU 7 th Floor
812-237-3939
www.indstate.edu/cns

The ISU Victim Advocate

Trista Gibbons, trista.gibbons@indstate.edu
HMSU 7 th Floor
812-237-3939 (office)
812-230-3803 (cell)

Campus Ministries United

Campus Ministries
812-232-0186
http://www2.indstate.edu/sao/campusinistries.htm
www.unitedcampusministries.org
ucmminister2@gmail.com
321 N 7 th St., Terre Haute, IN 47807

For more information on your rights and available resources http://www.indstate.edu/equalopportunitytitleix/titleix