Computer Science Practice & Experience:
BASIC CONCEPTS

  CS 1XA3  (Winter 2016)


* * * This outline is constantly updated. Students should consult this page regularly for all information relevant to this course * * *

Instructor

Dr. George Karakostas
ITB/218, ext 26132, Mac address: karakos
Office hours: Mon 4:30-6:30 PM (by email appointment)
 

Course Assistance

Philip Habib, Mac addr: habibp, Office hours: TBA
Ahmed Khan, Mac addr: khana97, Office hours: TBA


Schedule

Term II, 2015/16

Lecture:
F 11:30 - 12:20, Rm. T13/125


Section 1 labs: 
T   12:30 - 14:20,  Rm.
BSB/249
F  14:30 - 16:20,  Rm. BSB/249

Section 2 labs: 
M  12:30 - 14:20, 
Rm. BSB/249
Th 11:30 - 13:20,  Rm. BSB/249


Corequisites

One of CS 1MD3 or ENG 1D04


Course Objective

The main objective of the course is the study of basic Computer Science concepts such as data representation, recursion, computer architecture, concurrency through programming. The programming language used is Python 3. We will not assume any prior programming experience. We will concentrate more on a hands-on application of CS concepts to formulating, analyzing, and solving simple computational problems such as numerical calculations and data manipulation, than on their formal study (which will be the focus of specialized courses later on in your career through the programme.)


Learning objectives, indicators, and rubrics 

Outline of Topics and Student Assessment (Grading)

The course has three parts: lectures (one per week every Friday), preparatory labs (two hours per week per section, Wednesday or Thursday), and problem solving labs (two hours per week per section every Tuesday). There are also reserved lab hours (see above) to use at your leisure for practicing your skills. The organization of the course is as follows: Every week there is a specific topic covered (roughly corresponding to a textbook chapter) by the W/M lab sessions and the preceding lecture. You are provided with a "lab walk-through" document (see the links below) for the "practice" W/M lab, highlighting the most important (but not all!) issues covered by the corresponding material in the textbook, and providing practice problems for you to try. The lecture is also addressing some of these issues (and possibly more) in more depth. Then, during the following Thursday lab, you will be given a set of problems to do during the allotted time (2 hours); these problems are related to the practice problems you were given in the "walk-through" document, and your grade is going to be determined by how well you do in the Th. problem sets. You are going to get this problem set in class (i.e., not beforehand). The ground rules are as follows:

  1. A solution that doesn't even run automatically, or submitted after leaving the lab, gets 0 credit.
  2. A solution that runs but is partially correct gets partial credit (depending on the progress towards a full solution).
  3. Providing adequate, concise, and meaningful comments throughout your code is part of the solution grade (i.e., a piece of code that correctly solves a problem without ( or with inadequate) comments will score less than a well-commented piece of code that does the same). 
  1. Fr. 8, Th/F 7-8/1, M/T 11-12/1 (grade weight: 2%):
    Introduction to programming with Python (Read: Chapter 1, Appendix B). Walk-through 1
  2. Fr. 15, Th/F 14-15/1, M/T 18-19/1 (grade weight: 5%):
    Writing simple programs (Read: Chapter 2). Walk-through 2
  3. Fr. 22/1, Th/F 21-22/1, M/T 25-26/1 (grade weight: 8%): 
    Computing with numbers (Read: Chapter 3). Walk-through 3
  4. Fr. 29/1, Th/F 28-29/1, M/T 1-2/2 (grade weight: 10%):
    Sequences: strings, lists, and files (Read: Chapter 5, 11.1-11.3 from Chapter 11). Walk-through 4
  5. Fr. 5/2, Th/F 4-5/2, M/T 8-9/2  (grade weight: 10%):
    Decision structures (Read: Chapter 6). Walk-through 5
  6. Fr 12/2, Th/F 11-12/2, M/T 22-23/2 (grade weight: 10%):
    Functions (Read: Chapter 7, 8.1-8.2 from Chapter 8). Walk-through 6
  7. Fr 26/2, Th/F 25-26/2, M/T 29/2-1/3 (grade weight: 10%):
    Loop structures and Booleans (Read: Chapter 8). Walk-through 7
  8. Fr 4/3, Th/F 3-4/3, M/T 7-8/3 (grade weight: 10%):
    Simulation as an example of more complex programs (Read: Chapter 9). Walk-through 8
  9. Fr 11/3, Th/F 10-11/3, M/T 14-15/3 (grade weight: 10%):
    Defining classes and using objects (Read: 10.1-10.5 from Chapter 10). Walk-through 9
  10. Fr 18/3, Th/F 17-18/3, M/T 21-22/3 (grade weight: 10%):
    Algorithms and recursion (Read: Chapter 13). Walk-through 10
  11. From Th 24/3 until Fr 8/4 (grade weight: 15%):
    Project (Due by the last lab session of Fr 8/4) 
How to succeed in this course: This is the first of a series of courses in "CS Practice & Experience". This means that the main goal of the course is to teach you basic concepts by doing, i.e., by your own practice. As such, it is rather different to the common course format of lectures, tests, and, possibly, some labs. Learning how to program efficiently, correctly, and elegantly is a skill that nobody is born with, just like nobody is born an accomplished pianist. Therefore, most of you will initially find the task of completing programming assignments in only 2 hours rather daunting: 2 hours look like a lot of time, but they are quickly exhausted if you are stuck at a particular point, or a programming detail. Just like an accomplished pianist, the secret lies in learning how not to get stuck! But it is inevitable that this danger is greater closer to the beginning of the course (after all, you fall more off your bicycle during the first weeks of learning how to bike, than one year later). To alleviate somewhat the effects of this initial shock, there are a couple of things we can do: For my part, I have made the first labs count less towards your grade than later ones; For your part, you can follow the following simple pieces of advice:  
Learning objectives

Students should be able to


Resources

To read PDF files, you'll need the Adobe Reader, which is here.

Textbook: "Python Programming: An introduction to Computer Science", 2nd ed., by J. Zelle.

Avenue: Submissions, code from the book, "walk-through"'s etc. are done and can be found in the Avenue section for the course. 

Other resources: Python is so commonly used that there are very many books and electronic resources for all levels of programmers, from the beginner to the very advanced. There are many excellent (text)books and web sites/tutorials that can be used for studying Python. Here I give only a couple of pointers you may find interesting and useful, but don't feel discouraged from creating your own "programming (e)library".

 

Academic Dishonesty

"Academic dishonesty consists of misrepresentation by deception or by other
fraudulent means and can result in serious consequences, e.g. the grade of
zero on an assignment, loss of credit with a notation on the transcript
(notation reads:  "Grade of F assigned for academic dishonesty"), and/or
suspension or expulsion from the university.

It is your responsibility to understand what constitutes academic
dishonesty.  For information on the various kinds of academic dishonesty
please refer to the Academic Integrity Policy, specifically Appendix 3,
located at http://www.mcmaster.ca/senate/academic/ac_integrity.htm

The following illustrates only three forms of academic dishonesty:
1.    Plagiarism, e.g. the submission of work that is not one's own or for which other credit has been obtained.  (e.g. submitting a copy of someone else's writeup for an assignment)
2.    Improper collaboration in group work. (e.g. collaboration between groups in an assignment)
3.    Copying or using unauthorized aids in tests and examinations."

 

Faculty Notices

"The Faculty of Engineering is concerned with ensuring an environment that is free of all discrimination.  If there is a problem, individuals are reminded that they should contact the Department Chair, the Sexual Harrassment Officer or the Human Rights Consultant, as the problem occurs."
  
"The instructor and university reserve the right to modify elements of the course during the term. The university may change the dates and deadlines for any or all courses in extreme circumstances. If either type of modification becomes necessary, reasonable notice and communication with the students will be given with explanation and the opportunity to comment on changes. It is the responsibility of the student to check their McMaster email and course websites weekly during the term and to note any changes."