Comp 271-001
Data Structures
Summer, 2018

Course #: COMP 271-001  1773 (online)
Day/Time: Wednesday, 6:00 - 9:00 p.m.
Classroom: Zoom meeting: https://luc.zoom.us/my/cnaiman
Prerequisites: Prerequisites:  COMP 170 or COMP 215
Corequisites: COMP 163 or Math 201
Students are expected to be able to read, write, and debug basic computer programs using standard tools including compilers and editors. Students are expected to know the basics of Object Oriented Programming and be able to use classes and methods they or others have written. The logical mindset of mathematics is generally helpful in learning programming. See me if you have any questions or concerns about your preparation.
Instructor: Dr. Channah Naiman
email: cnaiman@luc.edu
web page: http://webpages.cs.luc.edu/~cnaiman
office hours:
Zoom, by appointment
TA:
John O'Sullivan  (limited, as explained in the Orientation)


Syllabus Index
Course Description
Course Outcomes
Course Objectives
Special Course Requirements Texts and Software Sakai/Piazza
Tutoring Class Format, Attendance Project
Course Schedule Exams   Grades



Academic Honesty Religious Holidays LUC Programmng environment
Students with Disabilities Online Student Recording Waiver
Important Dates

Course Description: This continuation of COMP 170: Introduction to Object-Oriented Programming introduces key data structures such as lists, sets, and maps, as well as their implementations. Performance and analysis of algorithms are covered along with applications in sorting and searching.
This course is programming-intensive. It includes several major programming projects, as well as a weekly lab component. Additional time working on reading, preparing, and programming will be required outside of class time.

Outcomes
:  Students will learn to design new data structures as well as learn to use existing data structures in applications.

Course Objectives
Upon successful completion of the course, the student will be able to:

  1. Discuss the appropriate use of built-in data structures.  Describe common applicaitons and construct and debug programs that use each of the following data structures:  lists, stacks, queues, trees, sets, maps and graphs.
  2. Describe the concept of abstract data types (ADT) in terms of interface (contrac), client (user) and implementation (provider). Explain how to implement abstract data types in an object-oriented language using classes, arrays and linked structures.
  3. Describe the concept of recursion and give examples of its use.  Implement, test and ebug simple recursive functions and procedures.  Determine whether a recursive or iterative solution is most appropriate for a problem.
  4. Explain why the creation of correct program components is important in the production of high-quality software.  Describe how a contract can be used to specify the behavior of a program component.   Apply a variety of strategies to testing and debugging simple programs.
  5.   Analyze the extent to which another programmer's code meets documentation and programming style standards.
NOTE:  There are additional skills that will be covered that are not related to Data Structures, but rather are useful for all professional software developers.  These include the use of an IDE (IntelliJ in our case), and Version Control Software (Git, and hosting on Github).


Special Course Requirements:   COMP 271 is a programming intensive course.  Considerable time will be  spent creating programs in the lab sessions and outside class. The largest portion of your grade will be determined by your success in writing, reading, compiling, running and testing these programs and how you explain and discuss programming with the class.  The course may include some programming assignments done with another person ("Pair Programming") or small teams or 2 to 6 students ("Team Programming").  The course will use Zoom as our online classroom.  http://luc.edu/itrs/teachingwithtechnology/zoom.  Check it before class starts at:  https://zoom.us/test.


Course Materials: 


Data Structures: Abstraction and Design Using Java. E.B.Koffman and A.T.Wolfgang. Wiley 2015 3rd edition. ISBN 978-1-119-18652-6. Online companion site (freely accessible)

The online version is recommended. You can try the online text free for 14 days at www.WileyStudentChoice.com


Additional course materials will be online, in Sakai, or provided in class.


The official documentation for Java version used in class is from Oracle  

https://docs.oracle.com/javase/9/docs/api/

https://docs.oracle.com/javase/10/docs/api/overview-summary.html

It is useful to look up specific terms, concepts, and other things you want to see.


Oracle has a much material to help Java programmers: start from this link:

http://www.oracle.com/technetwork/topics/newtojava/overview/index.html



Software:

Tutoring:  There is no tutoring avaialble from the department during the Summer.

Sakai:
As of this writing, Sakai will be used for course announcements, homework submissions, and grade postings.  While the raw scores posted on Sakai should be correct (although I have encountered some problems with that too!), please do not rely upon Sakai's Course Total calculations.  Usually, they are okay, but there have been problems.  I check the total grade postings periodically, to check up on Sakai's calculations.  Certainly, before the mid-term grade posting on Locus, and before the drop deadlines, check your grades (and I will too!)  Grades are calculated as specified in this syllabus.  If Sakai presents too many problems, we will switch to CourseSites.


Class Format:
Flipped:  Extremely important!!!  This course will use a "flipped" approach, where lectures and labs are covered in videos, and online class time is devoted to answering questions or providing additonal clarifiation and assistance.  The videos are extremely detailed and comprehensive.  Please come prepared to the scheduled class time having already watched the videos, so that you may ask questions, or you may benefit from the the questions of others.  I will not be lecturing during the scheduled class time.  Even if you feel comfortable with the material,  you should still attend the class, as you are reponsible for any announcements made in class, including changes to the syllabus or the course schedule.

Labs:  The course is structured around 10 labs.  The labs include the text material, as well as other material covered in class or included as links.  In general the labs include a starter template with comments inserted instructing you what you need to do to complete the code.  And in general, the labs are written in a more sophisticated level of code than you would normally be expected to write at this level, incorporating concepts and techniques that are not, strictly speaking, part of a data structure assignment.  So in this way, you get the exposure to a better way to code without having to be fully responsible for writing this code from scratch.  The first lab is a very simple Java program (something you should find very easy if you've taken COMP 170).  However, there are many "non-functional: requirements:  you will be required to complete the Orientation activities, including installing software, configuring git, using IntelliJ, importing a gradle-wrapped Java project from GitHub to IntelliJ, and other "housekeeping" type of activities.  Often, the labs will require that you reference a structure that already exists in Java, but you are required to write your own version of the structure.  In this way, you will become very familiar with the capabilities and limitations of the structures.

Pair Programming:  It has been demonstrated recently that Pair Programming, two people collaborating on one problem with one person coding while the other looks on, whether beginner students or seasoned professionals, allows projects been done better and faster with more confidence, and also that students learn at least as well and have more enjoyment in the process.  We will have the option to do pair programming in this course for in-class work and programing assignments.  (Your exams will NOT be in pairs however!)  Read the page on how to make pair programming work and also the page of administrative guidelines for pair programming (mostly for when it does not work out as planned!).



Project:  You will form teams of two,  three, or four, to complete a project, which is a major programming assignment in Java, incorporating the concepts and skills covered in the course.  The project will be discussed further in class.

Campus Network, Rights and Responsibilities
As a user of the campus network, you should be aware of your rights and responsibilities in http://www.luc.edu/its/itspoliciesguidelines/policy_acceptableuse.shtml

Much of your work will be done on your laptop, or on yoru own virtual machine.  Much of your work will be save on GitHub.  So I don't think there will be an issue with saving your work.  However, if you use the University computers, be aware that the University computers labs provide Computer Science students with permanent storage on P: drive. If you use both computer lab machines and other machines, or just share with a partner, you will want to take all of your files with you. You can use a flash drive, Google Drive, BitBuck or GitHub, Box, or, in a pinch, send an email to yourself or your partners wtih attachements.

Academic Honesty:
The penalty for cheating may be anywhere from a 0 on an assignment to a grade of "F" in this course. The appropriate dean will be informed in writing of any cheating incidents. No exceptions, for any reason.

Cheating consists of, but is not limited to:
Help from any source is fine concerning

Online Recording Statement

In this class software will be used to record live class discussions. As a student in this class, your participation in live class discussions will be recorded.  These recordings will be made available only to students enrolled in the class, to assist those who cannot attend the live session or to serve as a resource for those who would like to review content that was presented. All recordings will become unavailable to students in the class when the Sakai course is unpublished (i.e. shortly after the course ends, per the Sakai administrative schedule: https://www.luc.edu/itrs/sakai/sakaiadministrativeschedule/).  Students who prefer to participate via audio only will be allowed to disable their video camera so only audio will be captured.  Please discuss this option with your

The use of all video recordings will be in keeping with the University Privacy Statement shown below:

 
Privacy Statement

Assuring privacy among faculty and students engaged in online and face-to-face instructional activities helps promote open and robust conversations and mitigates concerns that comments made within the context of the class will be shared beyond the classroom. As such, recordings of instructional activities occurring in online or face-to-face classes may be used solely for internal class purposes by the faculty member and students registered for the course, and only during the period in which the course is offered. Students will be informed of such recordings by a statement in the syllabus for the course in which they will be recorded. Instructors who wish to make subsequent use of recordings that include student activity may do so only with informed written consent of the students involved or if all student activity is removed from the recording. Recordings including student activity that have been initiated by the instructor may be retained by the instructor only for individual use. 



Exam:  There are two exams.  This exam will cover material discussed in class, reading material on the web, and assignments. A review for the exam is posted one or two weeks before the exam.  They may already be posted.  If you must miss the exam, let me know well in advance. Then if you have a good reason we can possibly make other arrangements, at my discretion.  Other arrangements may or may not include a makeup exam or some other assessment of my choice.   I have little sympathy for people who inform me after the fact for no good reason. Exam absences will be veriifed.  If they can't be verified, you will not be excused. 

*No second try*: If you have an excuse for not being prepared to take the exam, but decide to take it anyway, you don't get to change your mind after you see a poor grade. Being sick is not a way to get one more chance than everyone else. I may allow you to delay an exam due to illness, but I will not let you be reexamined due to a poor grade.

Religious Holidays:  Students with religious holiday conflicts:  Please let me know within the first  week of class if you have a religious holiday conflict with any exam or homework due date, so that we can plan on an accommodation.

Students with Disabilities:  If you have a documented disability and wish to discuss academic accommodations, please contact the Services for Students with Disabilities Office (773-508-3700 and SSWD@luc.edu) as soon as possible.  Students with documented disabilities who provide me with a letter from the SSWD office will be fully accommodated as per the terms of the letter.  Students who are allowed to take their exams in the SSWD office are encouraged to do so.  Should you choose to take the exam in the classroom, I cannot guarantee that the classroom environment will be quiet enough to provide you with the environment that your disability may require.  If you choose to take the exam in the classroom, you are taking that risk.

Students with Sponsorships and Scholarships:  If you require a certain grade in order to satisfy a sponsor or a scholarship requirement, please be sure to monitor your grade on Sakai.  I will consider only your performance in this course in calculating grades, using the grading rubric posted in this syllabus.  If you cannot achieve a minimum grade that is required by a sponsor or a scholarship, I will not change your grade to help you meet that requirement.  This would be unfair to other students, and not reflecive of your performance in this course.  You are reponsible to monitor your grade and to keep apprised of the withdrawal dates posted by the registrar.

Grading:

Orientation Assignments      50
Labs 1 - 10
   400
Midterm Exam
   150
Project    200
Final Exam
   150
Participation      50
Total   1000


Course grades are assigned as follows:
A
93
A-
90
B+
87
B
83
B-
80
C+
77
C
73
C-
70
D+
67
D
63


Course Schedule:

The dates below give the sequence and a general idea of the time spent, though we may get ahead or behind this time schedule at different points, depending on the needs of the class.  Be sure to keep up with where we really are in class.

Labs (except for Lab 0, which isn't really a lab) are listed for the class when we will work on them together. The TA or I should check off your completion or at least your participation during the same class.  Labs 1, 2 and 3 cannot be made up outside of class.    Sometimes, we can't finish the labs in class.  In that case, I will check that work was done during class and allow a submission later, usually that night or the next day.  Labs 4 - 7 have assignments associated with them.  Due dates are listed on this syllabus and on Sakai.

Assignments are to be turned in on the date where they are listed below as due, generally by 11:55PM.

The Orientation and Module 1 include many topics that are essential for our programming environment. These topics are not Data Structures, but it is extremely difficult to porgram successsfuly in this course without mastering these toipcs.  The first lab assignment requires that you feel comfortable with the different software components of the course's infrastructure.

The dates below give the sequence and a general idea of the time spent, though we may get ahead or behind this time schedule at different points, depending on the needs of the class.  Every attempt will be made to meet this timeline, and changes will be posted on Sakai.  Links for supporting docuements and files, and submission links for assignments are on Blackboard.
Week
Date
Topic
Readings/Materials
Assignments
0

Orientation (before class begins)
  • Installation/configuration instructions on Blackboard
  • Videos to install, to create GitHub account, to clone using git
  • Videos to import into IntelliJ
  • Online Student Recording Waiver
Installation, Configuration and import assignments
Details on Sakai
1
5/23
  • Orientation if not complete
  • Java Review
  • Infrastructure Review
  • Appendices A.1 - 3; A.6 - 8
  • Chapter 1.1 - 1.6  (PPTs posted on Sakai)
  • Java Review [slides 1-46]

  • Java programming “cheat sheet” [link]
  • Example: hello-java


Lab 1:  Infrastructure and FizzBuzz
2
5/30
  • More Java Review
  • Command-line args
  • Basic I/O
  • ArrayLists
  • JUnit testing
  • Chapter 2.2-2.4; 3.1 - 3.7  (PPTs on Sakai)
  • Videos on JUnit Testing
Lab 1, continued
3
6/06
  • Quantifying Algorithms  (Big-O)
  • Searching:  linear, binary
  • ArrayList Implementation (possibly covered last week)
  • LInked List (brief introduction)
  • Chapter 2.2 - 2.5  (2.2 - 2.4 are review from last week)
Lab 2
DUE:  Lab 1
DUE:  JUnit screenshots

4

6/13

  • Linked lists in detail
  • Iterators
  • Chapter 2.5 - 2.6
  • Chapter 2.7 - 2.10
Lab 3
begin Lab 4 (short and easy lab)

DUE:  Lab 2
5
6/20
  • Stacks
  • Chapter 4.1 - 4.4
Complete  Lab 4
Lab 5
DUE:  Lab 3
6
6/27

  • Queues
  • Chapter 4.5 - all
Lab 6
DUE:  lab 4
7
7/04 No class on July 4!  But school is in session the rest of the week!!

  • Midterm Exam (in-person?)
  • Project Team Selection

DUE:  Lab 5
8
7/11
  • Recursion
  • Recursion, Cont'd
  • Chapter 5.1 - 5.3
Lab 7 
DUE:  Lab 6
9
7/18
  • Sets and Maps
  • Implementation using hash tables
  • Chapter 7.1 - 7.3
  • Chapter 7.4 - 7.6; Chapter 8.1
DUE:  Lab 7
Lab 8
10
7/25
  • Sorting
  • Project Help
  • Chapter 8
Lab 9
DUE:  Lab 8
11
8/01
  • Graphs
  • Chapter 10
DUE: Lab 9
Lab 10

12
8/08
  • Final Exam
  • LIghtenin Project Demos

DUE:  Lab 10


Important Dates:
Here are some dates from the LUC academic calendar:

Key Event  Day 2018
Early Summer Session (4-Week Session) and Summer Session A (First 6-Week Session) begin Monday 21-May
Early Summer Session (4-Week Session) and Summer Session A (First 6-Week Session): Late registration (fee applies) Late registration ends at midnight (second day of the session) Monday & Tuesday May 21-22
Early Summer Session (4-Week Session) and Summer Session A (First 6-Week Session): Tuesday 22-May
Last day to drop a course without a grade of "W"; midnight
Session A (First 6-Week Session): Friday 25-May
Last day to convert from credit to audit or vice versa
Last day to request or cancel pass/no pass option
Memorial Day: No classes Monday 28-May
Early Summer Session (4-Week Session) and Summer Session A (First 6-Week Session): Friday 1-Jun
Makeup day for Memorial Day holiday
Summer Session C (8-Week Session) begins Monday 4-Jun
 Summer Session C (8-Week Session): Monday & Tuesday June 4-5
Late registration (fee applies) 
Late registration ends at midnight (second day of the session)
Summer Session C (8-Week Session): Tuesday 5-Jun
Last day to drop a course without a grade of "W"
Early Summer Session (4-Week Session): Friday 8-Jun
Last day to withdraw from session without a penalty grade of "WF"; midnight
Summer Session C (8-Week Session): Friday 8-Jun
Last day to convert from credit to audit or vice versa
Last day to request or cancel pass/no pass option
Early Summer Session (4-Week Session) ends Friday 15-Jun
Summer Session A (First 6-Week Session): Friday 22-Jun
Last day to withdraw from session without a penalty grade of "WF"; midnight
Summer Session A (First 6-Week Session) ends Friday 29-Jun
Summer Session B (Second 6-Week Session) begins Monday 2-Jul
Independence Day Celebrated: No classes varies July 4 (Wednesday)
Makeup day for Independence Day Friday 6-Jul
Summer Session B (Second 6-Week Session): Monday & Tuesday July 2-3
Late registration (fee applies)
Late registration ends at midnight (second day of the session)
Summer Session B (Second 6-Week Session): Second Day of Session 3-Jul
Last day (midnight) to drop a course without a grade of "W"
Summer Session B (Second 6-Week Session): Thursday 6-Jul
Last day to convert from credit to audit or vice versa
Last day to request or cancel pass/no pass option
Summer Session C (8-Week Session): Friday 13-Jul
Last day to withdraw from session without a penalty grade of "WF"; midnight
Summer Session C (8-Week Session) ends Friday 27-Jul
Summer Session B (Second 6-Week Session): Last day to withdraw from session without a penalty grade of "WF"; midnight Friday 3-Aug
Summer Session B (Second 6-Week Session) ends Friday 10-Aug