CIS 301: Logical Foundations of Programming, Spring 2017


How To Survive in This Course

We cover a lot of materials in this course, and it is easy to get lost quickly if you do not keep up daily. We try to do several things to help you keep up. We provide the lecture notes, and links to some additional resources.

Besides all these, there are a number of things that you should do to make sure that you are getting the most out of the course. Before attending each lecture you should read the lecture notes. After attending each lecture, you should review the lecture notes again and any notes you have taken, then note any questions that are unresolved. You should bring those questions to the next lecture or come to our office ours (or emails).

Throughout the course you should do the homework assignments as independently and as completely as possible. If you do not do the homework, you will have difficulty on the exams. You may not work in teams together on the homework. Of course, it is fine to give each other small hints. What is a “small hint”? Well, in general, you should not tell another student more information about your solution than you believe we would tell you. For example, if you came to us and were having difficulty with a particular problem, we might remind you that we discussed a particular technique in lecture and refer you to some section of the lecture notes or other resources. We would not let you look at the model solution to see how we solved the problem. Please, do not violate this policy. It is not fair to the other students that are working independently, and you will be making things more difficult for yourself. If we believe that you are blatantly violating this policy you will receive no credit for your homework assignment.

If you find that you are having difficulties, do not panic, and do not despair. It is important that you come see us as early as possible so that we can take corrective measures.

How To Interact With The Instructor

If you have a question about the course material (or any other problem), the methods of interaction (in order of preference) are as follows:

  • a personal visit during office hours
  • a personal visit for which you have made an appointment outside of office hours
  • an email
  • a phone call

On matters of substance, it is almost always better to talk face to face. Sending email is appropriate in some situations (e.g., notifying us of a typo on homework, telling us that you cannot access a file, asking a simple question that only requires a brief response by me). However, it is not the best use of our time if you send us a question by email that will require us to type for 20 minutes but could be answered with a few diagrams on by white-board in less than five minutes. So try to come in person during office hours. We understand that some of you will not be able to come to our office hours because of conflicts with another course. If you have conflict with the office hours, or if you have an urgent question, we can schedule another time for you.

Some Other Notes For Interacting With The Instructor

  • If you want to come outside of office hours because you have an urgent question, you can try that, but we have other responsibilities that we have to take care of. Therefore, we may tell that we are busy and ask you to come back at a later time.
  • When you have a programming question, it will be helpful if you email your code and bring a print-out as well when you come and see us. That way, we can test your code and see exactly the error you are getting.
  • When you have problems understanding a particular concept or the material in general, avoid saying things like “I’m totally lost” or “I don’t understand anything”. You should try to identify where you have gotten lost. So instead you should say “I understood W, X, and Y, but when you started talking about Z, I didn’t see how....” A more precise question helps us converge more quickly on the problem that you are having. Remember, as they say, part of being a good learner is being able to ask good questions.


Feedback during the course is very important – both for student and for the instructor. The student needs feedback to determine: (1) how he/she is doing in the course, and (2) how to make performance-improving adjustments. The instructor needs feedback to determine: (1) how well the students are understanding the presented material, and (2) how the structure, content, and presentation of the course material can be improved.

In this course, students get feedback in two ways: (1) through comments on exercises, assignments, and exams, and (2) by personal interaction with the instructor/TA during 1-on-1 meetings, office hours, etc. We try to provide as informative comments on your coursework (as time permits).

As noted above, you should come to see us during office hours any time you have problem (sooner rather than later). Of course, we will get feedback on how well you are understanding the material by grading the exercises, assignments, and exams. However, for immediate feedback, we will often call on students to answer questions during the lectures. Sometimes people feel threatened by this, but they shouldn’t. We do this so that both the instructor and student can determine how well the material is being understood. The goal is to have a relaxed classroom atmosphere where we carry on a dialogue: students should feel free to ask questions, and I should feel free to ask you questions to see if I am getting my point across.

Finally, we get feedback from you on the end-of-the-semester teaching evaluations. The instructors in the K-State CIS department take these evaluations seriously. Besides giving us vital information on how to improve the course, the evaluations are also included in our yearly reviews by the department and considered when we are up for promotion.

The teaching evaluations that include written comments are the most helpful. You should view the written comment section as an opportunity for you to justify your rankings in the preceding sections. If you have given lower rankings, it is most helpful if you explain why and give some suggestions on how to improve the course. If you have given higher rankings and like particular aspects of the course, then you should note the things that you like and that you found helpful.

What Do Professors Do Besides Teaching

As opposed to smaller colleges and universities that focus on only undergraduate teaching, most large state universities such as Kansas State University are more research oriented. This means that in addition to teaching, most faculty members in the CIS Department at K-State are expected to divide their time between teaching, research, and service activities (serving on departmental committees, and performing tasks that support the scientific community at large). When a faculty member is hired in this department, generally they are asked to devote fifty percent of their time to teaching, forty percent to research, and ten percent to service.

Day-to-day research activities include supervising graduate students as they develop software and write their theses, writing code and experimenting with the software tools that we are developing, writing papers to be published in scientific conferences and journals, and preparing talks about our research to give at various places. Our service activities include serving on departmental committees, serving on program committees for various international conferences (this involves reading and writing reviews for papers submitted to conferences), and serving on review panels for funding agencies that award research grants.

Because K-State encourages these research and service activities, it is expected that faculty members will travel during the semester to participate in conferences, engage in research with collaborators, etc. We try our best to make sure that traveling causes as little disruption as possible in our courses.

This semester, your instructor will be involved in the following activities within the international community:

  • co-leading a work group that is drafting requirements for the AAMI / UL Joint Committee standard on safety in interoperable medical systems
  • working with FDA engineers on a lecture series related to innovative architectures for medical systems
  • working with engineers from Adventium Labs to develop novel engineering techniques for building safety-critical medical systems
  • serving on the organizing committee for NSA’s High-Confidence Systems and Software conference to be held in Annapolis, Maryland
  • writing papers related to software certification with various experts in safety-critical systems
  • working with scientists from the Software Engineering Institute on testing embedded systems
  • working with engineers from Argevide techniques for documenting the safety/security claims of interoperable medical systems