CIS 500 Fundamentals of Software Practice
Fall 2023

Contact Information:
Instructor: Zachary Kurmas Office: MAK C-2-316
Phone: (616)-331-8688 Office Hours: MW 1:30-2:30 (DCIH)
Home page: https://KurmasGVSU.github.io TTh 3:00 - 4:00 (DCIH)
T 1:00-2:00 (MAK)
Course Objectives:
At the completion of the course, students will be able to
  • Design and implement programs in an object-oriented language.
  • Solve problems using object-oriented principles – encapsulation, inheritance, and polymorphism.
  • Analyze and use common searching algorithms.
  • Analyze and use common sorting algorithms.
  • Use strings, linked-lists, stacks, queues, and trees to solve computing problems.
  • Analyze run-time performance of algorithms using Big-O notation.
  • Use command-line to compile and execute programs.
Instruction Format
This course will meet face-to-face as scheduled for lecture. Attendance is required. Many lectures may be "flipped", which means you will be expected to have read the assigned material and/or watched the assigned video content before attending lecture. A few course meetings may be asynchronous.
Text:
Prerequisites
Students must have experience in some high-level programming language (C, Java, C#, etc).
Important Dates:
  • Drop Day: Friday, 10 November
  • Final Exam: Tuesday, 12 December, 4:00; or Wednesday, 13 December 2:00 or 4:00
Course Policies:
  • I do not re-schedule labs, exams, or quizzes except in cases of extreme emergencies. Business trips are not emergencies.
  • The deadline to drop with a "W" is Friday, 10 November. Remember, I cannot and will not drop this class for you.
  • Attendance is required. I understand that absences are occasionally necessary; however, I reserve the right to lower grades for excessive absences.
  • This course is subject to the GVSU policies listed at http://www.gvsu.edu/coursepolicies/ as well as standard university COVID policies.
  • You are not under any circumstances allowed to use code that is written by others specifically for you or specifically for a CIS 500 assignment. In particular, you may not use code written by ChatGPT or similar software. On homeworks and projects, you may use existing code on sites like Stack Overflow to address a specific, well-defined problem that represents a small portion of the overall assignment. When using code from such resources, you must cite the source.
Special Assistance:
If there is any student in this class who has special needs because of learning, physical or other disability, please contact me and Disability Support Services (DSS) at 616.331.2490. Furthermore, if you have a disability and think you will need assistance evacuating this classroom and/or building in an emergency situation, please make me aware so I can develop a plan to assist you.
Learning Targets:
Rather than having a small number of "high stakes" exams, we will have weekly quizzes. Each quiz question will evaluate one of the learning targets listed below. Rather than receiving a numerical score, each submission will be scored as either "Success" or "Retry". To demonstrate that you have met a learning target, you must successfully complete quiz questions on that target during two separate weeks. You are not penalized if an attempt is not successful, you simply need to attempt that learning target again on a future quiz. Important: You may only complete four quiz questions in any given week, so plan ahead. (In other words, you can't wait and try to meet all of the learning targets during the last two weeks of class!)

The learning targets are divided into two groups: "Programming" and "Other".

  • Programming-based learning targets:
    1. Write code using conditionals (including compound conditions, else, and else-if) (cd)
    2. Write code that uses loops to iterate over arrays and/or strings (lp)
    3. Write code that calls multiple functions/methods (including nesting function/method calls) (fc)
    4. Write code that uses a Dictionary and/or a Set (ds)
    5. Determine the output of python code by tracing written code (ct)
    6. Write code that instantiates and uses multiple objects (ob)
    7. Write code that utilizes an external library (ex)
  • Other learning targets:
    1. Write unit tests for a function or method.
    2. Predict the output of code that uses an inheritance hierarchy.
    3. Predict the output of a recursive function/method.
    4. Determine the big-O run time of a section of code.
    5. Draw the state of a stack, queue, or binary tree, after a series of operations.
    6. Demonstrate understanding of the various search and sorting methods presented.
Projects:
There will be four projects. Projects will be scored using the EMPN metric. (See the diagram below.) A mark of "E" or "M" indicates that the submission is complete and clearly demonstrates that the student understands the concepts covered by the project. A mark of "P" indicates that the student is making progress, but the project require additional work/revision. A mark of "N" indicates that the project not sufficiently complete to assess. Students are expected to revise and re-submit projects until they have earned an "M" or better.

Late Days: Students will ideally have submitted a project that meets expectations by the stated due date. There is not an explicit penalty if a project still needs revision after the due date; but, I will track the total number of "late days" (days elapsed between the due date and when the student submits a project that meets expectations). Accumulating an excessive number of late days will lower the final grade.

Grading:
Your grade in this course will be specifications-based rather than points/percentage-based. The requirements for grades of A-, B, C, D, and F is given in the table below. Notice also the special criteria for an A.
CategoryDCBA-
Programming Learning Targets Complete: 1/5 Complete: 2/5 Complete: 4/5 Complete: 5/5
Other Learning Targets Complete: 1/5 Complete: 2/5 Complete: 3/5 Complete: 4/5
Projects Meets Expectations: 0/4 Meets Expectations: 1/4 Meets Expectations: 3/4 Meets Expectations: 4/4
Progressing 2/4 Progressing 3/4 Progressing 4/4
Timeliness Late days: ≤ 50 Late days: ≤ 25 Late days: ≤ 15 Late days: ≤ 10

Earning an 'A': Notice that the criteria above are for an A- not an A. To earn a "straight" A, you must meet the criteria for an A- and get an 85% or better on the final exam.

+/- modifiers: There will be a comprehensive final exam. If you score 80% or higher on this exam, you will earn a "+" on your base grade. If you score 60% or lower, you will earn a "-". The final exam has no other effect on your course grade. I may add a plus or minus to a course grade for other reasons at my discretion. For example, i reserve the right to add a "-" to your grade for excessive absences. Note: GVSU does not award grades of A+ or D-.


Updated Monday, 4 December 2023, 1:26 PM

W3c Validation