CMSC 160: Introduction to Algorithmic Design I
 (Fall 2018)
(as of August 14, 2018)

Instructor: Scott McElfresh (pronounced  mac' - el- fresh)
Ruffner 346     Phone:  x2249
Email:   ProfScottMcElfresh @ (checked more frequently) or  mcelfreshsa @
Office Hours: 
- MWF 3-3:45pm 
- Th  11am-12noon
- 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: Most of the handouts in this course will be available through this World Wide Web address.   

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:
"An  introduction  to  problem  solving  and  algorithmic  design  using  an  object-oriented  programming  language.  Topics  include  programming  logic,  iteration,  functions,  recursion,  arrays,  memory  management,  user-defined  data  types,  abstraction,  and  complexity  analysis.  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.

Attendance:  You are expected to attend the section for which you are registered unless arrangements have been made ahead of time.

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 be 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.   

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.

There will be two in-class exams.  They will be given on the following dates:
        #1)   Wednesday, September 26
        #2)   Friday, November 9
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. 

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 
+'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.

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.

University Resources:
Longwood University provides many services, including those addressing disabilities, mental health issues, and sexual misconduct.    Please see  for more informaton on these resources.

Tentative Topic outline:

Week Dates Topics
1 Aug 20-24 Programming Basics; Console I/O
2 Aug 27- 31 Console I/O; calculation; strings
3 Sept 3 -7 Conditionals
4 Sept 10- 14 functions; parameters
5 Sept 17- 21 while loops; algorithms
6 Sept 24-28 Algorithm Verification; EXAM
7 Oct 1 - 5 More Algorithms; for loops
8 Oct 8 - 12 files; algorithms
9 Oct 15 - 19 Fall Break; vectors
10 Oct 22 - 26 vector algorithms; structs
11 Oct 29 - Nov 2 efficiency
12 Nov 5 - 9 EXAM: 2D data
13 Nov 12 - 16 recursion
14 Nov 19 - 23 TBA; Thanksgiving
15 Nov 26 - 30 TBA
Dec 3 - 7 FINAL EXAM

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