CIS 500 Fundamentals of Software Practice
Fall 2024

Contact Information:
Instructor: Zachary Kurmas Office: MAK C-2-316 / DCIH 530G
Phone: (616)-331-8688 Office Hours: MW 1:00-1:30; TTh 3:00-4:00
Home page: https://KurmasGVSU.github.io (DCIH 530G)

E-mail is the best way to contact me. During the week, expect a reply within 24 hours. Also, feel free to visit my office any time the door is open, even if it isn't officially office hours.

I expect to be in my Allendale office most Tuesdays mornings and some Thursdays and Fridays. If you are already on the Allendale campus, feel free to drop by. However, before making a special trip to Allendale, I suggest emailing me to make sure I'm available.

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:
Important Dates:
  • Drop Day: Friday, 8 November
  • Final Exam: Monday, 9 December, noon or Tuesday, 10 December at 4:00 p.m. or 6:00 p.m.
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, 8 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 using the EMPN metric described below. To demonstrate that you have met a learning target, you must receive an 'M' or better 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!)

  1. Predict the output of code that uses nested function calls (pf)
  2. Predict the output of code that uses conditionals (pc)
  3. Predict the output of code that uses loops (pl)
  4. Write code using conditionals (including compound conditions, else, and else-if) (cd)
  5. Write code that uses loops to iterate over arrays and/or strings (lp)
  6. Write code that calls multiple functions/methods (including nesting function/method calls) (fc)
  7. Write code that uses a Dictionary and/or a Set (ds)
  8. Construct and interpret a regular expression (re)
  9. Navigate a Linux file system using the command line (lx1)
  10. Chain Linux commands together using pipes and file redirection (lx2)
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.

Homework:
Homework, textbook exercises, and in-class exercises will be graded as "complete" or "incomplete". To be considered complete, an assignment must pass all tests within one week of the due date.
Late Days:
Students will ideally have submitted a assignments that meet expectations by the stated due date. There is not an explicit penalty if an assignment 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 submission 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 B, C, D, and F is given in the table below. Notice also the special criteria for an A.
Category D C B
Learning Targets Meets Expectations: 7/10 Meets Expectations: 8/10 Meets Expectations: 9/10
Projects Meets Expectations: 0/2 Meets Expectations: 1/2 Meets Expectations: 2/2
Progressing 1/2 Progressing 2/2
Homework / In-Class Complete: ≥ 60% Complete: ≥ 70% Complete: ≥ 80%
Textbook Exercises Complete: ≥ 60% Complete: ≥ 70% Complete: ≥ 80%
Timeliness Late days: ≤ 25 Late days: ≤ 15 Late days: ≤ 10

Earning an 'A': To earn an 'A', you must

  1. Meet all the criteria for a 'B'.
  2. Get an 85% or better on the final exam.
  3. Satisfy at least 8 of the 10 learning objectives in four attempts or fewer.

Updated Thursday, 10 October 2024, 2:16 PM

W3c Validation