COMP-202 - Introduction to Computing 1 (Winter, 2004)

Welcome
News
Syllabus
Calendar
Assignments
Office hours
Hints
Links
Resources

Syllabus

What is this course about

This course is an introduction to computer programming, that is, how to create computer software. The main thrust of the course is directed towards learning the fundamental tools in designing and implementing computer programs using the programming language Java. In addition, some time will be devoted to learning about the structure of personal computers, networks, and applications of computers in general. Although this course is intended to teach students to program in the Java language, the material learned in the course is applicable to programming in other high level programming languages such as C, C++, and Python. This course will cover both imperative as well as object-oriented programming techniques.

What is this course not about

This course is not about how to use a computer. Here we will not teach you how to send e-mail, how to browse the Web, how to set-up and configure a computer, how to use specific software applications, how to design web-pages, or how to deal with operating systems problems.

Who is this course for

This course is intended for those students with little or no experience in computer programming. It is a required course for some majors (e.g. Electrical Engineering, Computer Engineering and Software Engineering) and it is valid as an elective in other majors. You should look at the Undegraduate Calendar to check whether this course is valid for you. Students in Computer Science and Software Engineering that have sufficient programming experience in a high-level programming language (not necessarily Java) might continue directly to COMP-250 Introduction to Computer Science. These students should be familiar with the notions of variables, assignment, conditionals, loops, functions, procedures, primitive and user-defined data-types, some elementary data structures such as arrays and linked-lists, and preferably some understanding of basic object-oriented programming concepts such as objects and classes. If you have programming experience, but are unsure whether you have this background, you should consult with your advisor.

Prerequisites

A CEGEP level math course or equivalent. For students who did not attend CEGEP, any upper-level mathematics course is sufficient.

You are assumed to be able to do some basic tasks with a computer such as sending e-mail, browsing the Web, running (openning) programs, saving and loading text files in a text editor.

It is not expected from you to have any programming experience.

Course outline

A detailed schedule can be found under Calendar.

  1. Computer Systems
  2. Introduction to programming
  3. Primitive Data Types, Objects, Input/Output
  4. Conditional control flow
  5. Repetition: loops
  6. Functions: static methods
  7. Objects and Classes
  8. Enhancing Classes
  9. Arrays and Vectors
  10. Inheritance and Exceptions
  11. I/O Streams and Recursion
  12. Dynamic Data Structures
  13. Introduction to Software Engineering

Textbook and references

The textbook is

Java Software Solutions by John Lewis and William Loftus. Addison-Wesley.

The book can be obtained at the McGill bookstore.

Additional information can be obtained from Sun Microsystem's Java website at http://java.sun.com.

Computers and Software

All programming assignments will be done using the JDK Java compiler on personal computers. You may use the JDK tools directly by editing the files using your favourite text editor. However, we recommend to use a program development environment, in particular the JCreator LE environment which can be downloaded for free at http://www.jcreator.com (Please note that in the website there are two versions: JCreator LE, and JCreator Pro; only the LE version is free of charge.)

You can develop your assignments at home or at any of the several computer labs available on campus. In the Computer Science department we have a lab specially dedicated to this course, located at McConnell Engineering Building, room 106N. To have access to this lab you need to open an account. You can go to this lab and ask for the lab consultant who will help you openning an account. This lab is intended for course work only. It gets very crouded particularly near assignment deadlines, so you should plan carefully.

The openning hours for the lab at 106N are:

  • First Weeks

    • Mon. - Fri. 10:00 - 18:00
    • Sat. & Sun. 12:00 - 17:00
  • Subsequent Weeks

    • Mon. - Fri. 10:00 - 20:00
    • Sat. & Sun. 12:00 - 17:00

If you prefer to use other labs on campus we can suggest you to contact the work area of your choice, to enquire about the hours, and for any further information needed. Most facilities are available to all McGill students but there are locations with restricted usage permitting access only to those students within the faculty or department indicated. For example, students in the Faculty of Science may want to use the new lab to be set up in Burnside Hall, and Engineering Students may want to use the new Engineering Labs.

A usage fee is required by some facilities and it may be a little more for students not from the faculty or department indicated. A student may pay the fee on a per day basis or become a member, i.e., obtain a pass by paying for a full semester or academic year. Becoming a member may have certain advantages such as, for instance, computer reservation privileges. Most areas provide printing, but may have a charge per page.

Further information about other labs can be obtained at http://www.mcgill.ca/cc.

Course Lecturers

  • Section 1: Ernesto Posse (Course coordinator)

    • Office hours: Wednesdays 2:30 - 4:30 pm
    • Email address: eposse@cs.mcgill.ca
    • Office: McConnell Engineering Building, room 202
    • Telephone: 398-7071 ext 0364
  • Section 2: Yannick Daoudi

    • Office hours: Thursdays 11:30 am - 1:30 pm
    • Email address: ydaoud@cs.mcgill.ca
    • Office: Duff Medical Building, room 332
    • Telephone:
  • Section 3: Klaus Reinhardt

    • Office hours: Mondays 2:00 pm - 4:00 pm
    • Email address: reinhard@cs.mcgill.ca
    • Office: McConnell Engineering Building, room 310
    • Telephone: 398-7071 ext 00073

Teaching Assistants (TA's)

All T.A.s will be available for 2 hours per week, in the McConnell 106N Lab, to help you with your assignments, and answer questions about the course material. You may ask questions to any T.A., not just the one who marks your assignments.

Grading system and deadline policy

  • Assignments: 25%
  • Midterm: 20%
  • Final: 55%

There will be six assignments, each with equal weight. We will calculate your assignment mark by taking your best 5 of 6 assignments, each counting for 5% of your final mark. We encourage you to complete all of the assignments as this is the major way in which you learn the material. If, for some reason you cannot complete one assignment, then we will assign a 0 to that assignment, and we will count the other 5 completed assignments.

Late assignments will be deducted 5% each day for which they are late. Assignments handed in more than 2 days (including week-end days) after the deadline will not be accepted, nor marked. Assignment #3 cannot be late at all because we will post the solution in time for the midterm.

Policy on Assignments and Plagiarism

Plagiarism, under any form, will not be tolerated. Assignments must be done individually, you may not work in groups. If you need help with your assignments, please visit the TAs during their lab hours or the instructors during their office hours. Do not rely on friends or tutors to do your work for you. You may not copy another person's work in any manner (electronically or otherwise). Furthermore, you must not give a copy of your work to another person. We will be randomly checking for similarities between programs, and you may be asked to present and explain your program to an instructor or TA.

You must include your name and student number at the top of each program or module that you have implemented. By doing so you are certifying that the work is entirely your own, and you are accepting responsibility for any bugs in the program.

Students who require assistance with their assignments should see the teaching assistants during their lab hours, or students should consult with their instructor during his/her office hours. If, for some reason beyond your control, you are too busy to complete one assignment by the deadline, just take a 0 for that assignment (see marking policy above). If you have partially finished an assignment, you must document what works and what does not work in your program, and hand it in.

Students who put their name on programs or modules that are not entirely their own work will receive a mark of 0 for that assignment, and this mark will be counted as one of the 5 assignments marks included in the final grade. In addition, the students involved may be referred to the appropriate Associate Dean who will assess the need for further disciplinary action.

How to submit each assignment

Assignments will be submitted through WebCT. This will be explained in class.

Posting of course marks

The course marks will be posted on WEB CT. The marks will be updated after each assignment and midterm. It is your responsibility to check that the marks are correct and to notify your instructor of any errors or missing marks. Please make sure to do this within 10 days from the date the grade was submitted to WEB CT. To go to WEB CT click here.

What comes after this course?

Students who enjoyed this course may want to continue with further studies in Computer Science or Software Engineering. If you did well in this course (i.e. you got at least a B+, preferably an A), then you may want to continue as a Computer Science or Software Engineering Major. Your next course will be COMP-250, Introduction to Computer Science. If you don't want to do a major, but you are still interested in Computer Science, you can continue with a minor in Computer Science. For a minor program, the next course to take is COMP-203, Introduction to Computing II. In planning your academic program, you should always consult with the appropriate advisor.