Course Syllabus

CIS 300, Spring 2019, 10:30-12:20 MWF

Professor: Rod Howell

  • Email: rhowell@ksu.edu
  • Office: 2163 Engineering Hall
  • Office Hours: 9:30-11:00 TT
  • Phone: 785-532-7735

Grader

Majed Alsadhan will be responsible for grading homework assignments. He is available for help in 1119 Engineering Hall at the times shown on the calendar below and by email (mos at ksu.edu). 

Lab Assistants

The lab assistants are available for help during lab times and in 1119 Engineering Hall at the times shown on the calendar below. The following lab assistants have been assigned to this section:

  • Rida Ahmed
  • Alex Burroughs
  • Lynette Hardinger
  • Anna Maloy

You may also seek help from the assistants assigned to the other sections in 1119 Engineering Hall at the times shown in the calendar below.

Office Hours Calendar

Below is a calendar showing the office hours for the semester. You can access it from any calendar application that supports the iCal format with the following link https://www.google.com/calendar/ical/gubep1p76upkafhip0skfj0n7s%40group.calendar.google.com/public/basic.ics.

 

Required Textbook

Data Structures in C#, Rod Howell.

Recommended Textbook

If you would like to refer to a textbook on programming in C#, I can recommend:

  • Programming in the Key of C#: A Primer for Aspiring Programmers, Charles Petzold.

Prerequisite

The prerequisites for this course are CIS 200 and either MATH 205 or MATH 220. A grade of a C or better is required for each prerequisite. If you do not meet the prerequisite requirement for this course, you should see me immediately, or you will be dropped from the course.

Learning Outcomes

Students should attain competence in:

  • Using interfaces to (partially) define a data structure
  • Implementing and using standard versions of classic data structures: lists, stacks, queues, trees, and hash tables
  • Implementing and using elementary algorithms for searching and manipulating a data structure
  • Using recursion, including recursive definitions of data structures like lists and trees
  • Using and implementing algorithms for sorting
  • Understanding performance differences between various algorithms and data structures

Programming Environment

The development environment to be used in this class is Microsoft Visual Studio 2017. This software is available on the Windows machines in the public labs in Engineering Hall 1114, 1116, and 1118, as well as certain other public labs on campus. Please note that some of these labs are reserved for classroom use at certain times of the day - be sure to check the schedules posted by the doors.

If you wish to install the software on your own PC, you can download it for free from Microsoft Imagine (see below) for your own personal use. You should download Visual Studio Enterprise 2017. If you don't yet have a Microsoft Imagine account, you can download a trial version of Visual Studio Enterprise directly from Microsoft; however, once you get your Microsoft Imagine account, you may need to uninstall the trial version, then install the version from Microsoft Imagine. (Because most of you should have a Microsoft Imagine account by now, you should first try obtaining the software this way.)

This software requires a Microsoft operating system. If you do not have a Microsoft operating system, you can download one for free from Microsoft Imagine (see below) for your own personal use. You will need to install it either on a separate bootable partition of your hard drive or on an emulator. You can obtain the emulator vmware Fusion from the vmware Dreamspark store (see below).

Microsoft Imagine and vmware Dreamspark

All students enrolled in CIS classes at KSU have access to certain Microsoft and vmware software packages for free through Microsoft Imagine and vmware Dreamspark, respectively. If you were enrolled in this or another CIS course here prior to this semester, you should already have these accounts - if you don't know how to access them, you should be able to reset your password via the Microsoft Imagine password reset page or the vmware Dreamspark password reset page (use your KSU email address). If you do not yet have an account, early in the semester, you should receive an email giving you a user name and password for accessing both Microsoft Imagine and vmware Dreamspark. This email will have a subject line of "An account has been created for you", or something similar. Spam filters will often mark these message as spam. Please note that any software obtained in this way is licensed for your own personal use, and may not be distributed to anyone else.

Topics

Time permitting, I would like to cover the following topics (not necessarily in this order):

  • Using Visual C# to construct GUIs
  • Strings and related structures
  • File I/O
  • Stacks
  • Queues
  • Lists
  • Trees
  • Binary search trees
  • Priority queues
  • Tries
  • Hashing
  • Graphs
  • Sorting

Grading

  • Lab assignments: 20%
  • Homework assignments: 20%
  • Exam 1, Fri., Feb. 15: 12%
  • Exam 2, Fri., Mar. 22: 12%
  • Exam 3, Wed., Apr. 24: 12%
  • Final Exam, Fri., May 17, 11:50am-1:40pm: 24%

Lab Assignments

During each lab session, unless an exam is scheduled, a lab assignment will be given. Lab assignments must be completed in the lab during the time allotted for the lab. Full credit (2 points) will be awarded for successful completion of the assignment. Half credit (1 point) will be awarded for a legitimate but unsuccessful attempt to complete the assignment. The lowest five scores will not be counted toward your final grade. No absences will be excused - if you fail to attend a lab, you will get no credit for the assignment.

Homework Assignments

Six programming assignments will be given as homework during the course of the semester. All solutions must be submitted electronically by the given due date. Late submissions will be accepted with a penalty of 1 point (out of 100) per hour, or any portion of an hour, late; thus, if a submission is 1 minute late, the penalty is 1 point. If multiple solutions are submitted for the same assignment, only the last one will be graded. No submissions will be accepted after three days (i.e., 72 hours) past the due date. The lowest score you receive on these assignments will not be counted toward your final grade.

Exams

Each of the first three exams will be a 50-minute exam covering roughly 25% of the course material. The Final Exam will be comprehensive. Except under extreme circumstances (as judged by me), no make-up exams will be given.

Grading Scale

Final grades will be assigned according to the following scale:

  • 90%-100%: A
  • 80%-89%: B
  • 70%-79%: C
  • 60%-69%: D
  • Below 60%: F

Academic Honesty and Classroom Conduct

Kansas State University has an Honor System based on personal integrity, which is presumed to be sufficient assurance that, in academic matters, one's work is performed honestly and without unauthorized assistance. Undergraduate and graduate students, by registration, acknowledge the jurisdiction of the Honor System. The policies and procedures of the Honor System apply to all full and part-time students enrolled in undergraduate and graduate courses on-campus, off-campus, and via distance learning. The honor system website can be reached via the following URL: www.k-state.edu/honor. A component vital to the Honor System is the inclusion of the Honor Pledge which applies to all assignments, examinations, or other course work undertaken by students. The Honor Pledge is implied, whether or not it is stated: "On my honor, as a student, I have neither given nor received unauthorized aid on this academic work." A grade of XF can result from a breach of academic honesty. The F indicates failure in the course; the X indicates the reason is an Honor Pledge violation.

In this class, you may discuss homework assignments with others, and you may help each other to find errors in your code; however, you must write up your own solutions yourself, without using either complete or partial solutions from your classmates, the Internet, or other sources. Unless you are instructed otherwise, you must complete your lab assignments without the help of your classmates, the Internet, or other sources outside the classroom (the instructor, a GTA, and lab assistants will be available to help you if you need it). You must do the exams with no assistance from others. If you are in doubt about what is permissible, please ask me.

All student activities in the University, including this course, are governed by the Student Judicial Conduct Code as outlined in the Student Governing Association By-Laws, Article V, Section 3, number 2. Students who engage in behavior that disrupts the learning environment may be asked to leave the class.

Canvas

All assignments and other course materials will be distributed via Canvas. Grade information may be accessed there, and announcements will be posted from time to time. Important class messages will be emailed to your KSU email addresses and posted as announcements. You must be enrolled in the course to access Canvas.

Disabilities

Students with disabilities who need classroom accommodations, access to technology, or information about emergency building/campus evacuation processes should contact the Student Access Center and/or their instructor. Services are available to students with a wide range of disabilities including, but not limited to, physical disabilities, medical conditions, learning disabilities, attention deficit disorder, depression, and anxiety. If you are a student enrolled in campus/online courses through the Manhattan or Olathe campuses, contact the Student Access Center at accesscenter@k-state.edu, 785-532-6441; for Salina campus, contact the Academic and Career Advising Center at acac@k-state.edu, 785-826-2649.

How to Succeed in This Course

  • Prepare for labs. Preparatory readings and the slides to be used will be available in the Labs module in advance (usually two days). Taking some time to familiarize yourself with the material will help you to do well on the lab assignments, as well as to learn more from the lab experience.
  • Come to lab. Simply by coming to at least 35 of the 40 labs and trying to complete them will get you half of the total points allotted to lab assignments, or 10% of the total points for the course. Furthermore, by trying, you will undoubtedly complete many of them, which will earn you even more points. (Note that attempting 35 and completing just 21 will still get you 80% of the lab points). Finally, what you learn from this experience will help you to do well on the homework and the exams.
  • Don't be afraid to ask for help on labs. While there is value in figuring things out on your own, there is limited time to complete the lab assignment. If you seem to be stuck on something, or if something in the instructions doesn't make sense to you, ask for help from me or one of the lab assistants - that's what we're there for. A little help can often make a big difference.
  • Complete any unfinished labs on your own. Even if you don't get credit for completing a lab assignment, you will learn from completing it on your own. This will help you to do well on the homework and exams.
  • Start homework assignments early. Programming usually takes longer than you expect. Starting early will help you to complete the assignments on time.
  • Review model solutions. Even if you completed the assignment, seeing how I did it can help you to learn more.
  • Take advantage of exam materials. Well before each exam, I will post in the Exam Materials module a study guide and some exams I have given in the past. Using these resources to guide your study will help you to be better prepared for the exams.

Copyright © 2019 (Rod Howell) as to this syllabus and all lectures. During this course students are prohibited from selling notes to or being paid for taking notes by any person or commercial firm without the express written permission of the professor teaching this course.

 

Course Summary:

Date Details Due