COMP-202 - Introduction to Computing 1 (Fall, 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. More generally this course is an introduction to algorithmic problem solving, imperative and object-oriented programming. In addition, some time will be devoted to learning about the structure of personal computers. Although during this course, the language used to implement programs is Java, the material is applicable to programming in other high level programming languages such as C, C++, Ada and Python.

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. This course will not focus on any specific operating system such as Windows, Linux or Mac OS.

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 Lecturers

  • Section 1: Yannick Daoudi

    • Office hours: Mondays 10:30 - 11:30 am, Wednesdays 10:30 - 11:30 am
    • Email address: ydaoud@cs.mcgill.ca (please do not e-mail to WebCT)
    • Office: McConnell Engineering Building, room
    • Telephone: 398-7071 ext ???? (for emergencies only)
  • Section 2: Monty Newborn (Course coordinator)

    • Office hours: Mondays 10:00 - 12:00 am, Wednesdays 10:00 - 11:00 am
    • Email address: newborn@cs.mcgill.ca (please do not e-mail to WebCT)
    • Office: McConnell Engineering Building, room 306A
    • Telephone: 398-7079 (for emergencies only)
  • Section 3: Ernesto Posse

    • Office hours: Wednesdays 2:00 - 4:00 pm
    • Email address: eposse@cs.mcgill.ca (please do not e-mail to WebCT)
    • Office: McConnell Engineering Building, room 202
    • Telephone: 398-7071 ext 0364 (for emergencies only)

Teaching Assistants (TA's)

All T.A.s will be available for 2 hours per week, 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.

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. Other useful references include:

  • Computing Concepts with Java Essentials by Horstmann
  • The Java Programming Language by Arnold and Gosling

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 J2SDK Java compiler on personal computers. You may use the J2SDK tools directly by editing the files using your favourite text editor. However, we recommend to use a program development environment such as NetBeans, XEmacs (for Linux), or JCreator LE (for Windows) 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 Lorne M. Trottier Building, third floor. 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 crowded particularly near assignment deadlines, so you should plan carefully.

Usually the labs are open from 9:00am to midnight on weekdays.

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.

Grading system and deadline policy

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

There will be six assignments. We encourage you to complete all of the assignments as this is the major way in which you learn the material.

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.

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. 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, modules, or parts of programs that are not entirely their own work will be referred to the appropriate Associate Dean who will assess the need for disciplinary action. Such disciplinary action may include expulsion from the univerity.

We strongly recommend you to read the information on academic integrity found at http://www.mcgill.ca/integrity, and the Code of Student Conduct and Disciplinary Procedures found in the Handbook of Student Rights and Responsibilities otherwise known as the "Green Book." This is a compilation of University policies related to your rights and obligations as a student. It can be obtaint at http://upload.mcgill.ca/secretariat/greenbookenglish.pdf for the English version, http://upload.mcgill.ca/secretariat/greenbookfrench.pdf for the French version.

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 WebCT. 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 WebCT.

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.