COMP 170: Introduction to Computer Science

Search this site
  • Syllabus
  • Course Schedule
  • Sitemap

Syllabus

Course Description

This is the course syllabus and schedule for COMP 170, Introduction to Computer Science, taught by Prof. George K. Thiruvathukal. The link to the schedule is provided so you can easily find out what is being covered each week. All students are expected to read this page in its entirety at the beginning of term to make sure you have a clear understanding of the course policies, expectations, and (notably) the grading criteria.

This course presents a comprehensive introduction to computer science and programming. As a core requirement for Computer Science majors, as well as Physics and Information Systems/Operations Management students, this course has a standard description on the Computer Science department pages. Our course follows this description.

Quick Links

For the most part, this site is just a "landing page" that I use to keep the course-specific syllabi and schedule. Virtually everything you need can be found via the Course Notes link below.
  • Course Notes, introcs.cs.luc.edu (responsive web theme version based on Twitter Bootstrap)
  • Sakai, sakai.luc.edu (Spring 2013) - used primarily for the Gradebook functionality
  • Piazza, www.piazza.com - used for in-class discussions and getting help when you are stuck
  • Mono Compiler and SDK, www.mono-project.com
  • YouTube videos based on our book (Thanks, Andy, although I am gradually recording more of them!)

Course Instructor

Dr. George K. Thiruvathukal Professor of Computer Science co-Director, Center for Textual Studies and Digital Humanities Department of Computer Science Lewis Towers, 531e

Teaching Assistants

Lindsey Brockman (lbrockman@luc.edu) is here to help. Please make sure you CC Dr. Thiruvathukal (gkt@cs.luc.edu) on any communications where you are discussing a matter related to grading. Dr. Thiruvathukal is the only person who is authorized to change your grade, with the exception being in-class lab assignments, which are checked off/graded by the TA..

Contact Information

E-mail is the prefered method of communication. Please use gkt@cs.luc.edu for all communication. Office hours are always provided on Tuesday and Thursday after class. If you absolutely need to meet me and are finding things just a tad crowded, you are encouraged to request an appointment. I give priority to all appointments, even during walk-in hours. Please contact Dr. Thiruvathukal to be added to the group.

Textbook

All of the material you need for this course is available in a completely free (in terms of price) and open access textbook co-authored by myself and Dr. Andrew Harrington (also from Compter Science, available via introcs.cs.luc.edu, which replaces a $125 book. You will find almost everything you need in this resource, which is available in a variety of formats (web, print, and tablet reading). 

Prerequisite

Math 117 or Comp 163 or Comp 150 with a passing grade or better, or you may be taking Comp 150 now. No prior programming experience is required. We will do simple arithmetical calculations. The logical mindset of mathematics is very useful, not a head full of formulas.

Please note that my specific course section is specifically targeting students who are more mathematically and scientifically inclined. This does not mean that you need to be a major in these subjects but the goal is to provide a rigorous introduction to computing, and it is likely that some additional mathematics/science examples will appear throughout the term.  

Overview

The present page is basically administrative information. For course content, see the page for the Course Introduction. If you already studied introductory Object-Oriented Programming, and think you may not need this course, see the more complete summary of the top 10 topics, and consult with me.

Tentative Exam Schedule

We’ll have quizzes every 3-4 weeks. To allow time for the project, there will be no quizzes scheduled during the last 4 weeks of the course. Schedule to follow. The final exam slot will be used for your final project, which will be graded as if it were your final.

Exam Strategy

For exams, people work at enormously different speeds. I hate to grade people on pure speed. I want an exam short enough for everyone to do. Rather than make it so short that each individual problem counts a great deal, I have had success with making a reasonable length exam for most people to do in a single class, but allowing people to stay an hour late on exam days, in case you need extra time. If you cannot schedule either time to be free on an exam day, let me> know as soon as possible. Try to plan ahead for those three days. On days when exams are scheduled, we will use the lab time to allow extra time to complete the exam.

Class periods

I will not always be following the book. I will try to follow the topics listed in this syllabus but in the end am more concerned about real learning and fluency in computing as opposed to covering all topics. Information and activities in class that are not in the book will be on exams and used in homework. Your participation in class may help your grade. I do not formally count class attendance, but I strongly recommend that you be there to start your path in computer science well. I will have notes from classes available on the web, but do not depend at all on their completeness. Always check in with your partner or other classmate if you miss class. I will generally have code examples on the web at my repository. My first priority is to run a good class for the people present. I am very happy to give extensive help outside class to people who attend class. If my first pass on an idea was not enough for you, we can do better together in pass 2, and maybe pass 3 if needed, …. I am much less enthusiastic explaining what has already happened in class to a person who is frequently absent.

Cell Phones

I assume that my class is not the most important thing in your life. Only you know the relative importance of any particular connection through your cell phone, and whether it is important for you to answer a call imediately rather than later. I do want you to be respectful of my class and disrupt it as little as is practical. If you get cell phone calls with fair frequency, be sure to have the ring muted (use vibrate mode) before coming to class. If you rarely get calls, you might not mute it ahead, and your cell phone may happen to ring. Get rid of the noise as soon as possible, and do not get flustered. I assume you will move outside the classroom for a conversation. If you get fairly frequent calls that you are likely to consider important answering, sit in a place where your exit and re-entrance are as unobtrusive as possible.

Pair Programming

A recent paradigm shift in professional programming has been Pair Programming, two people collaborating on one problem on one computer. This has proven to be more efficient than each doing separate parts independently and merging them, particularly when error fixing time is included. More recently this approach has also been used in classes with completely new student programmers. Not only have the individual projects been done better with more confidence, but also students have learned at least as well and had more enjoyment in the process. We are encouraged to do pair programming in this course for labs and homework assignments, and you are encouraged to work in pairs on your parts of the final group project within overall teams of around 4 students. (Your exams will NOT be in pairs however!) Read the page of administrative guideline s for pair programming and also the page referenced there on how to make pair programming work.

Labs

You are required to register for and participate in the laboratory session for this class. The material covered in the lab sessions will be an integral part of the course. In the lab you will gain hands on experience with the concepts we discuss in class. The lab sessions will be conducted by our teaching assistant who is a graduate student in computer science. Your grade in the lab sessions will be based on participation and on your final products. The grade will be one component of your final grade in the course. Take advantage of the help the TA’s and I can give you in the lab!

Programming Environment

We will be programming in C#–a language developed by Microsft as part of the .Net framework. As this is a computer science course, however, our goal is to make sure you can do your work on any reasonable desktop, which includes Windows, OS X, or Linux. As such, we will be using an implementation of C# from the Mono Project that supports the current C# language and is entirely compatible with the concepts/materials we are covering in this class. You are encouraged to download and install the Mono SDK (Software Development Kit) for your computer/operating system right away (version 2.10 or later, please). In addition, you will need to download and install a text editor and the MonoDevelop development environment, which will be used once we get experience with the basics of editing, compiling, and running programs. Any text editor is fine but we plan to introduce Vim and Emacs in a first laboratory exercise, which are available on all platforms. We discourage the use of Windows Notepad, which is not the best editor for programmers, owing to many limitations.

Programming and homework assignments

There will be approximately 4 pair programming assignments linked to the course site. Most will extend over about a two-week period. The assignments will be based on material discussed in class, assigned reading material and lab work. Homework is turned in using (still being determined but not Blackboard). Assignments are due at midnight at the end of the date specified unless otherwise stated. Assignments should be turned in on time, running correctly. Please start early enough to get help if you need it, and get the program working completely correctly before the due date. See the next section for late assignment policies. You may only work with your pair partner on the assignment, and NOT work with other students - see the section below on Academic Dishonesty. Working on programming problems is essential to your understanding of the course material and will not only be a direct part of your final grade, but will also affect your exam performance. There may be a second component of programming assignments - reading another pair’s submission critically.

Late assignments

In this class the following lateness penalties apply to the individual programming assignments: Assignments turned in up to one week late can receive a 10% penalty. Assignments may not be accepted more than one week late. If there is some special reason for an assigment being turned in late, preferably speak to me directly first. I will consider reducing the penalties. If I accept your reason, ALSO make a comment at the top of your source code in the main program. (This reminder helps!)

Final Group Project

You will also be assigned to groups of 3-5 for a large open-ended project (writing a game and its instructions and other documentation), that should be assigned after the second exam and should mostly consume the last third of the course, in and out of class and lab. This will provide quite a different experience from the more highly specified individual assignments earlier in the course. Your group will be expected to turn in an intermediate version part way through the project, and you can use the feedback you get to make sure you are on a successful track for a final submission. Each team will present their game in part of the final exam period, and then we can all play other teams’ games! This is in lieu of a final exam. At the end of the project, I will ask each team member individually to turn in a form identifying the principal contributions of each member of their group.

Extra help

Learning is a spiral process, and different people need to take different sized steps. Self dependence and stretching yourself are great, but this only goes so far. Take advantage of the resourses provided when you need them.
  1. Please take advantage of the Pair Programming. You and your partner may complement each other very well.
  2. I welcome questions inside class, in regular office hours, or by arrangement at other times.
  3. When I am not available, please visit the Computer Science Department tutors. They have scheduled times all through much of the week. Also, you might try visiting several tutors: Some may fit you better than others. See the tutoring schedule. Hopefully this is set up by the second week of classes.
Campus Network, Rights and Responsibilities: As a user of the campus network, you should be aware of your rights and responsibilities in at ITS Acceptable Use Policies

Grading Breakdown/Weights

Category Quantity Weight
Exams 3 40%
Labs 15 15%
Homework 3 15%
Final Project 1 20%
Participation 1 10%
The assignment/lab grade is a percentage of the maximum points possible. The maximum excludes any extra credit options. Exams may be scaled/curved. I convert the numerical grade from the final weighted average to course letter grades with the following minimum requirements:
Grade Percentage
A 93
A- 90
B+ 87
B 83
B- 80
C+ 77
C 73
C- 70
D+ 67
D 60
It is my general policy to help students evaluate their options, if their work at midterm is not at 70% or higher. Should you find yourself in the position of falling short of this level, please make an appointment so we can discuss your next steps. If you have consistently displayed more knowledge, ability, and genuine interest in class discussions than you show in your exams, I may raise this grade. Note that one way to display your effort and thought is to ask questions in class about your readings!

Exam Policy

Exam coverage

Exams will cover material discussed in class, reading material in the text and on the web, lab work, and assignments. Exams will always be cumulative, but they will NOT include new material from the class immediately before the exam. This way there will always be time for questions after digesting a class.

Grading

Do not write down things on exams that you can see are incomplete or incorrect without making some comment acknowledging this – it is better to know you are wrong than to be wrong and think you are right.

Missed Exams

If you must miss an exam, let me know well in advance. Then if you have a good reason we can possibly make other arrangements. I have little sympathy for people who inform me after the fact for no good reason. I may completely excuse you from an exam if you were sick or unable to attend for long enough. Most often if you cannot take an exam at the usual time, I will want you to take it a little later, BUT I WILL NOT LET ANYONE TAKE A LATE EXAM AFTER THE NEXT CLASS PERIOD. If you somehow fail to let me know in a timely fashion that you have an excuse and want to take the exam late, appear at my office before the NEXT class after the exam, and I may be able to give you the exam.

No Do-Overs

If you have an excuse for not being prepared to take an exam, but decide to take it anyway, you don’t get to change your mind after you see a poor grade. Being sick is not a way to get two chances. In certain circumstances I may allow you to delay an exam due to illness, but I will not let you be reexamined due to a poor grade. As a reminder, I reserve the right to request documentation about illnesses and “emergencies” that arise, especially in the case of repeated absences.

Academic Dishonesty

The penalty for cheating may be anywhere from a 0 on an assignment to a grade of “F” in this course. The appropriate dean will be informed in writing of all cheating incidents. Cheating consists of, but is not limited to:
  • Using or copying an outside person’s work on an exam or assignment in any fashion.
  • Work includes outlines, pseudocode, code, documentation, and analyses.
  • Allowing your own work to be copied or used by an outside person.
  • Submitting as your own work something that has been written by an outside person.
  • Using any unauthorized reference on an exam or assignment
  • Using electronic communication (especially during exams) to gain an unfair advantage.
If you are working on a pair or group project, an “outside person” only refers to people other than your assigned partner or team. Note that cheating goes both ways: both giving and receiving. Consultation is allowed with me, the TA, or official tutors for Comp 170. If you consult with any of these people, still make a comment at the top of your work about the substance and depth of the help. Hiding such help is also academic dishonesty. Help from any source is fine concerning
  • The meaning of program specifications (not the plan for the solution or the actual solution).
  • The tools used to write programs. Feel free to ask questions on the programming environment you use and the use of the debugger.
  • The restrictions of C# syntax.
Questions? Please contact me if you have questions about these groundrules or about anything else in the course. After class, by email, in my office, by phone, all work for me. I am here to help.

ACM Computing Curricula Topic Coverage

We will be covering these general categories from the ACM Computing Curricula:
  • PF1. Fundamental programming constructs
  • PF4. Recursion
  • PL1. Overview of programming languages
  • PL2. Virtual machines
  • PL4. Declarations and types
  • PL5. Abstraction mechanisms
  • SP1. History of computing (throughout the course)
These codes come from the ACM guidelines (PF=Programming Fundamentals, PL=Programmin Languages, etc.)

Sign in|Report Abuse|Print Page|Remove Access|Powered By Google Sites

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.