CMSC 162: Introduction to Algorithmic Design II
 (Fall 2017)
(as of August 21, 2017)

Instructor: Scott McElfresh (pronounced  mac' - el- fresh)
Office: 
Ruffner 346     Phone:  x2249
Email:   ProfScottMcElfresh @ gmail.com (checked more frequently) or  mcelfreshsa @ longwood.edu
Office Hours: 
- MWF 3-3:45pm 
- Th  12:30-1:30pm
- or when I am in my office with the door open
- or by appointment
Other times may be announced in class or on the website.

Course Web Page:
http://cs.longwood.edu/~scottmce/Fall2017/CMSC162-IntroAlgII/  Most of the handouts in this course will be available through this World Wide Web address.   

Canvas:
Canvas will be used for submission of some assignments and recording of grades on individual assessments.  You may wish to set up Canvas to send you an email when grades and/or feedback is entered.   NOTE:  Canvas does not always calculate course grades correctly.  The relative weights are in this syllabus.

Course Description:   
From the catalog:
"A continuation of CMSC 160. Topics include algorithmic design, complexity analysis, abstract data types, and encapsulation and basic data structures. Advanced topics using a modern high-level programming language such as inheritance, overloading, and use of objects. Prerequisite: Grade of C- or better in CMSC 160. 4 credits."

Course objectives:
At the end of the course, a successful student will be able to:

Textbooks:  There is one textbook required for this course.  

Technology:   It is assumed that you have a laptop that you can bring to class and can install software on if necessary.  The software to be used is free.   It is assumed that you can access the LancerNet wireless network (the LancerNet Visitor will not suffice).

Pictures, Audio, and Video:
Students should not take audio or video recordings in the classroom without prior permission.    Still pictures of the board may be taken as a supplement to note-taking.    However, these should not be posted online or elsewhere such that they might be shared with someone not enrolled in the class.

Exercises (Homeworks/Labs): 
The exercises in thiscourse will include readings, program commentaries,  program/script creation, or other work.       They will come from three scenarios:
i)  Lab.   Some class days will be "lab days" where there will be an exercise to be completed in class.  Some of these will be individual assignments while others will be group or paired work.    Labs will be due at the end of the class period.    You will need to have your laptops on these days.    Late submissions due to absence will require permission and may incur a 50% penalty.     Note: These days will most commonly be held on Thursdays, but there may be other days as well.   These non-Thursdays will be announced ahead of time.
ii)  Homework.    These will be assignments to be completed outside of class.   Some of these may be due the very next class period while others may have a longer handin horizon, depending on the nature of the assignment.      Late submission will require permission and may incur a 50% penalty.
iii)  Combination.    There will be assignments that contain a portion to be done in class and a portion to be done outside of class.    Late submission will require permission and may incur a 50% penalty.

Feedback:    Some assignments will be drill exercises with minimal feedback (it works or it doesn't)  while others will receive more feedback on things like style and partial correctness.   This should be clear on each exercise.

Timing:  Due the varying nature and horizon of assignments, some assignments will be worth more than others.  The overall exericses grade will e determined by adding up the number of points received on exercises, and dividing that number by the total number of points that it was possible to recieve on exercises.   

Quizzes:  
There will be quizzes throughout the semester.   These will typically take the form of short (5-15 minutes) sets of questions.  There will be no make-up quizzes given.    If more than 5 quizzes are given, the lowest two quiz scores for each student will not be calculated into the course grade.

Exams: 
There will be two in-class exams.  They will be given on the following dates:
        #1)   Friday, September 29
        #2)   Wednesday, November 8
There will be no makeup exams given without proper medical documentation.

Final Exam: 
There will be a comprehensive written exam.   More details on this will be announced as the time approaches. 

Grading:
The relative weight of each item in determining your course grade will be as follows:
 
  Exercises: 40%

Quizzes: 10%

Exam #1: 15%

Exam #2: 15%

Final Exam: 20%
Course Grades will be assigned as follows: 
 
Course percentage   Course Grade
90 - 100
A-, A
80 - 89.9
B-, B, B+
70 - 79.9
C-, C, C+
60 - 69.9
D-, D, D+
 0  - 59.9 
F
+'s will be assigned in the top 2 percentange points of the range.
-'s will be assigned in the bottom 3 percentange points of the range.
SPECIAL NOTE:  Exercises that are not handed in, or quizzes and exams not taken will count as a 0.    Canvas does not always calculate these accurately.

Collaboration:
Unless otherwise specified, all work is assumed to be your own.   You are encouraged to discuss the exercises with other students, but you must write up your own solutions.  Some guidelines:
Efforts will be made in class to describe these issues.  If you have any questions as to what is appropriate and what is not, please ask me about it.

Academic Honesty:     
Longwood University is an academic community that subscribes to an honor system.   By accepting membership in this community, we all assume the obligation to be trustworthy in all pursuits.  Violations may receive grade penalties in the course and be referred to the Honor Board, which may impose additional penalties.


Tentative Topic outline:

Week Dates Topics
1 Aug 21 - 25 Review; Intro to Separate Compilation; Testing
2 Aug 28 - Sept 1 References; Classes; Objects
3 Sept 4 - 8 Objects; List structures
4 Sept 11 - 15 Recursion
5 Sept 18 - 22 Runtime Analaysis
6 Sept 25 - 29 Recursion with data structures
7 Oct 2 - 6 Algorithms and analysis
8 Oct 9 - 13 Stacks and queues
9 Oct 16 - 20 Dynamic Memory Management
10 Oct 23 - 27 Linked Lists
11 Oct 30 - Nov 3 Linked Lists ;Bucketing; Hashing
12 Nov 6 - 10 Threaded lists
13 Nov 13 - 17 Binary Search Trees
14 Nov 20 - 24 Maps
15 Nov 27 - Dec 1 TBA
Dec 4 Final Exam

A detailed day by day calendar will be kept up-to-date on the course website.