CMPS-2020 Programming II: Data Structures and Algorithms
Gordon Griesel
Office: Sci III 337
Office Hours: see my schedule, or make an appointment
Email: gordon@cs.csub.edu

Course web site: https://www.cs.csub.edu/~gordon/2020/

Course meets:
MWF 8:00am - 8:50am in Sci-III 311 (lecture 33356)
Thu 7:20am - 9:50pm in Sci-III 311 (lab 33357)

Course Description:
From the catalog:
CMPS 2020 Programming II: Data Structures and Algorithms (4 units)
Builds on the foundation provided by CMPS 2010 to introduce the fundamental concepts of data structures and algorithms that proceed from within the framework of object-oriented programming technology. Topics include: recursion, fundamental data structures (including lists, stacks, queues, hash tables, trees and graphs) and basics of algorithmic analysis. Necessary components of object-oriented programming method will be introduced. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2010 with C- or better.

Lecture Topics and Rough Schedule
The topics below are the general subjects of the course, and will
be introduced and discussed sequentially as the course progresses.
Subjects could be added or removed.

C++ object-oriented topics
   Templates
   Inheritance
   Polymorphism
   Virtual functions
Data structures and algorithms
   Lists, arrays
   Sorting
   Stacks and queues
   Linked-lists
   Trees, binary trees
   Graphs, grids
   Heap, priority queue, heap-sort
   Dictionaries, hashing, hash tables
   Algorithm analysis, efficiency, Big-O notation

Textbooks:
Starting Out with C++: From Control Structures through Objects 
Author: Tony Gaddis
Publisher: Pearson
Edition: 9th
ISBN-13: 978-0134498379
ISBN-10: 9780134498379
(8th edition is acceptable)
A Common-Sense Guide to Data Structures and Algorithms
By: Jay Wengrow
Publisher: Pragmatic Bookshelf
Pub. Date: August 3, 2017
Print ISBN-13: 978-1-68050-244-2
Pages in Print Edition: 220
about $40 on Amazon
You should already own the C++ book.

Grading Policy:
labs                  10% *****
homework              20% **********
quizzes and
class exercises       10% *****
Midterm exam-1        20% **********
Midterm exam-2        20% **********
Final exam            20% **********
-------------------------
Total                100%

Grading scale used during the semester...
    A   93%
    A-  90%
    B+  87%
    B   83%
    B-  80%
    C+  77%
    C   73%
    C-  70%
    D+  67%
    D   63%
    D-  60%
    F   50%

Attendance
Class attendance is both recommended and required.
Attendance is usually taken before class begins. When our class time-block
starts, you should already be in your seat and ready to go. Not being in
the classroom when class begins is an attendance mark.

One attendance mark is no big deal. The second attendance mark causes a
deduction of 1/2 percent to your overall course grade. The count then starts
again. Every second attendance mark causes a 0.5% deduction in your grade.

Note:
Current time is determined using an Andriod phone which runs about 15-seconds
behind the official U.S. time presented on www.time.gov. Plan your time using
time.gov and never be late.

Late arrivals
Arriving late to class after roll has been taken causes an attendance mark.
If you do arrive late, enter quietly and do not walk across the classroom
looking for a seat. A disturbance to the class can cause an additional
attendance mark.

Labs
Labs are hands-on assignments designed to be done in the classroom
on classroom computers. You may install the necessary components
on your own laptop computer, and bring it to class.
  - Attendance is required for any credit.
  - Full attendance is required for full credit.
Each lab will have some tasks that are due by the end of the lab period.
A lab assignment could be extended into a homework assignment.
Important: Do no arrive late to a lab session and then ask another student
to help you with the assignment. This can result in a score of zero.
Ask your instructor for help instead.

Homework
Homework assignments and due dates will be posted on the course website.
It is common for a lab assignment to be extended into a homework assignment.
Sharing of assignment files is not allowed. If you miss a class session,
do not ask for or accept the completed or partially-completed assignment files
of another student. This will result in a score of zero for all students
involved. Instead, ask your instructor how to get caught-up with the class. 

Quizzes
A quiz is a short exam that covers current material from reading, lecture,
lab, homework, and project material. Quizzes can be online or written.
A quiz can be given at any time during any class session.

Exams
Exams will be announced in advance.

Late Assignment Policy
Assignments submitted late are not accepted and receive a score of zero.

Compile and build standards for all work
Compile flags C++11, C++14, and C++17 are not needed for work in this course.
If you need them, please make sure your programs compile on the Odin server
and on our classroom computers.

Time Conflicts
Time conflicts are not allowed. Your own personal schedule must allow you to
arrive on-time to class, and stay for the entire class period.
CMPS-3350 is a hands-on course taught in-person in the classroom by your
instructor. This course is in no way an on-line course. In-class assignments
are not to be done at some remote location. All exams require your in-class
on-time attendance also.

Accommodations
Students requiring accommodations should speak with the instructor at the start
of the course. To make arrangements for accomodations, please contact SSD at
the following link: http://www.csub.edu/univservices/ssd/services2.htx

Classroom Behavior
Please do not...
  • wear headphones of any type in the classroom.
  • use your cellphone during class time.
  • walk across the classroom while a lecture is in progress.
  • hold a conversation with another student during a lecture.

Absence from class
If you miss a class and wish to make up the work, it is your responsibility to
inform your instructor of the reason for missing class (documentation required)
and to arrange to make up exams, quizzes, and class work, to the extent that
this is possible. Excusable absences include, but are not limited to:
Illness, injury, family emergency, etc.
See a complete list at CSUB Catalog page 64.

Recordings
Under California Education Code Section 51512, it is illegal for any person,
including a student, to use an electronic device to record what is happening
in the classroom without the consent of the instructor. This includes photos.
The instructor for this course does not give consent for electronic recording
of any kind. If a disability requires you to record a class session,
then please contact SSD so accommodations can be made.

Academic Integrity Policy
All work done in this course is individual work, unless specified otherwise.
Please do not share your work with other students.
Refer to the Academic Integrity policy printed in the campus catalog and class
schedule. Violations are enforced in accordance with the Department's policy
on academic honesty.


Amendments
Your instructor reserves the right to amend this syllabus during the semester.