CMPS 2020 - Spring 2019

Derrick McKee

Office: Sci III 321, 654-2819

Office Hours:

MonWed: 8am-9am, 10am-11am, 12pm-1pm

Thurs: 7am-7:20am, 9:50am-10am

Fri: 8am-9am

Email: derrick@cs.csubak.edu
Contact Me

Course website:
http://www.cs.csubak.edu/~derrick/cs2020/

Course meets:

Lecture: MWF 9:00am-9:50am Sci III 240

Lab: Th 7:20am-9:50am in Sci III 240

Course Description:

Builds upon the foundation provided by CMPS 2010 to introduce the fundamental
concepts and design of object-oriented programming, data structures,
algorithms, and algorithm analysis. The course focuses on the concepts
and implementation of fundamental data structures
(linked lists, stacks, queues, trees, hash tables, and graphs). Other topics
include: pointers, recursion, searching and sorting algorithms, and the basics
of algorithm analysis.

ACM/IEEE Computer Science Curriculum (2013):

(CS-PL1/CE-PRF1,2) Object-Oriented Programming

(CS-PL2/CE-PRF3) Functional Programming

(CS-SDF2/CE-PRF4) Fundamental Programming Concepts

(CS-SDF3/CE-PRF4) Fundamental Data structures

(CS-SP8/CE-PRF0) History of computing

ABET Outcome Coverage:

3b. An ability to analyze a problem, and identify and define the computing
requirements and specifications appropriate to its solution.
Laboratory and homework assignments will require analysis of the
problem for successful completion of the assignments.

3c. An ability to design, implement and evaluate a computer-based system,
process, component, or program to meet desired needs. An ability to understand
the analysis, design, and implementation of a computerized solution to a
real-life problem.
Laboratory and homework assignments require analyzing the presented
problems, designing a solution to those problems, and implementing the
solution in a high-level programming language.

Prerequisite:

(1) MATH 0930 or (2) other satisfaction of the
entry Level Mathematics requirement AND
CMPS 2010 with C- or above.

Textbook:

Starting Out with C++: From Control Structures through Objects, 8th edition.
Tony Gaddis. Publisher: Addison Wesley, 2014. ISBN: 0133769399

***********************************

Topics covered in CMPS 2010:

Chapter 1 Introduction to Computers and Programming

Chapter 2 Introduction to C++

Chapter 3 Expressions and Interactivity

Chapter 4 Making Decisions

Chapter 5 Looping

Chapter 6 Functions

Chapter 7 Arrays

Chapter 9 Pointers

Chapter 10 Characters, Strings and the string Class

Chapter 11 Structured Data

Chapter 13 Introduction to Classes

Chapter 14 More About Classes

***********************************

Material Covered:

Chapter 15 Inheritance, Polymorphism and Virtual Functions

Chapter 16 Exceptions, Templates and the Standard Template Library (STL)

Chapter 17 Linked Lists

Chapter 18 Stacks and Queues

Chapter 19 Recursion

Chapter 20 Binary Trees

Data Abstraction & Problem Solving with C++, 6th edition. Frank Carrano.
Publisher: Prentice Hall / Pearson. ISBN: 0-321-43332-7.

Material Covered:

Chapter 1 Data Abstraction: The Walls

Chapter 2 Recursion

Chapter 3 Array-Based Implementations

Chapter 4 Linked-Based Implementations

Chapter 5 Recursion as a Problem-Solving Technique

Chapter 6 Stacks

Chapter 7 Stack Implementations

Chapter 8 Lists

Chapter 9 List Implementations

Chapter 10 Algorithm Efficiency

Chapter 11 Sorting Algorithms and Their Efficiency

Chapter 12 Sorted Lists and Their Implementations

Chapter 13 Queues and Priority Queues

Chapter 14 Queues Implementations

Chapter 15 Trees

Chapter 16 Tree Implementations

Chapter 17 Heaps

Chapter 18 Dictionaries and Their Implementations: Hashing

***********************************

Chapter 19 Balanced Search Trees

Chapter 20 Graphs

Chapter 21 Processing Data in External Storage

View the weekly schedule on the course website to see the order in which these
topics will be presented.

Attendance:

Students are responsible for their own attendance. The topics covered
in lecture will be listed on the course website. Lab attendance is not
required but is strongly encouraged.

Academic Integrity Policy:

Homeworks and labs may be worked on and discussed in groups. If the
assignment is a group assignment, the group can turn in one assignment
for the entire group. If the assignment is an individual assignment,
each student must turn in their own code; no direct copying is allowed.
Refer to the Academic Integrity policy printed in the campus catalog
and class schedule.

Services for Students with Disabilities:

To request academic accommodations due to a disability, please contact the
Office of Services for Students with Disabilities (SSD) as soon as possible.
They may be reached at 661-654-3360 (voice), or 661-654-6288 (TDD). If you
have an accommodations letter from the SSD Office, please present it to me
during my office hours as soon as possible so we can discuss the specific
accommodations that you might need in this class.

Tutoring Center and Open Use Computer Lab:

The walk-in computer lab in Sci III 324 is available for use by students
in this course outside of class time on a first come, first serve basis.
Priority in the lab is given to students who are completing assignments
for Computer Science and Computer Engineering courses.

Tutoring is also provided on a limited basis in the walk-in lab. A tutoring
schedule will be posted on the department website by the end of the first
week of classes. Students in this course may ask the tutors for assistance
on assignments. The tutors are not allowed to solve the assignment for you,
but they can assist with problems like cryptic compiler errors.

Labs:

Lab assignments will be posted on the course website. Labs are worth 4
points and usually involving writing a short programs. There will be one
lab assignment each week (THURS) that will be due
before midnight. Partial credit will be given for incomplete
labs.
The lowest lab grade will not be counted towards the overall lab grade.
(1 free lab). You may work in groups up
to two persons for labs only. I will
only need ONE submission of your group's lab assignment with each of the
group members' names commented at the top of your lab source code.

Homework:

Homework assignments and due dates will be posted on the course website.
Homeworks are worth 4 points and consist primarily of a moderately sized
programming project related to the lecture material from that week.
Each homework assignment will be due the following week on Tues before
midnight (11:59 PM), unless stated otherwise.
Programs which do not compile may be given partial credit depending on the
severity of the error(s), but no more than half credit.
No homework grades are dropped, however extra credit assignments
could be given throughout the semester.

Late Policy:

**Late assignments will not be accepted**.
If there is a late policy that is posted on the assignment, then that
policy will apply for that particular assignment.

Labs/Homework Submission:

Assignments are submitted by saving a copy of your final source code to
the corresponding depository directory. The assignments' file name must
be exact. A server side script will run to extract the file(s) at the
time of the assignments' due date.

During lab days, once you have completed your lab, you may show the
instructor the assignment and have your assignment graded then. If you did
not complete your lab durint lab time, you may submit your lab source code
file(s) to the corresponding depository directory before midnight.

Some homework assignments may be handwritten assignments, so either a hard
copy submission or a scanned copy of your assignment may be submitted.

Allow at least one week after the assignment due date for the grade to be
posted. It is your responsibility to check to see if your assignment
has been received/graded and to contact the instructor if it has not been
received. If your assignment received an asterisk on the grades report,
you have until the end of the week to contact me or the assignment will not
be counted.

Out-of-class Time:

It is expected that students in a 4 unit course such as this will spend 10
to 15 hours each week outside of class working on assignments or reading
sections from the textbook. Several of the homework assignments in this
class will require approximately 10 hours to complete, so be sure to budget
enough time to complete the assignment before the due date.

Quizzes:

Quiz dates will be announced ahead of time, however they could be given at any
time during a Mon Wed or Fri lecture. On average there will be a quiz after
every 2 - 5 lecture days. Quizzes will consist of a few questions based off
lecture material, lab assignments, and/or homework assignments. Expected time
to complete will be about 10-15 minutes. Quizzes can not be made up.
If more than three quizzes are missed,
the student will receive a 0% for quizzes within the grade distribution.

Midterms:

**Midterm 1** will be given (during week 7),
**TBA**, Thursday

**Midterm 2** will be given (during week 13),
**TBA**, Thursday

** subject to change

Makeup midterms will not be given. Please contact the instructor if you
have a compelling reason for missing or rescheduling a midterm.
A midterm could be counted proportionally higher if you have a valid
reason for missing a midterm.

Final:

The **final** is on **Monday May 20, 8-10:30am**

If you cannot make this time because it conflicts with another final or you
have more than two finals scheduled that day, contact the instructor ONE WEEK
in advance of the final to schedule an alternate time. If you do not attend
the final, the highest acheivable grade for this course is a D+.

Homework / Lab Rubric | Description |
---|---|

4 | All criteria of the assignment was met with no compilation errors |

3 | Mostly all criteria of the assignment was met with no compilation errors |

2 | Partial criteria of the assignment was met with compilation errors |

1 | Little to no criteria of the assignment was met |

Grade Distribution | |
---|---|

Homework | 25% |

Lab | 10% |

Quizzes | 5% |

Midterm 1 | 20% |

Midterm 2 | 20% |

Final | 20% |

93% | A |

90% | A- |

87% | B+ |

83% | B |

80% | B- |

75% | C+ |

70% | C |

65% | C- |

60% | D+ |

55% | D |

50% | D- |

49% | F |

Notifications