Guy Lemieux
Winter 1999
APS 105S - Computer Fundamentals - is designed to give you an introduction to computer systems and their role in problem solving in science and engineering, and to provide you with the basics for studies in greater depth in subsequent years. The course consists primarily of lectures and laboratories. Major topics to be covered in the lectures include: problem solving, programming, algorithms, data structures, digital computer elements and digital computer operation. The laboratories will provide you with an opportunity to exercise concepts introduced in the lectures through a number of programming assignments using the Java programming language. Throughout, there will be an emphasis on a programming style that encourages easier understandability, debugging, and maintenance of programs.
Monday Wednesday Friday 10-11 10-11 11-12 GB119 GB120 SF1105
Monday Tuesday P0101 P0102 4-6 10-12 SF1012/1106 SF1012/1106
The schedule above shows the times for the lab sections. While lab access and use are possible any time, you must regularly attend your own scheduled lab session to get your lab marked. We will not accept your assignment unless it is your day. Teaching assistants will be available to answer any questions and offer help at those sessions, and will assign you a grade based on your progress in each lab session. If you have the assignment working before the lab session, then you only need to attend long enough to get a grade assigned.
The first lab will not be graded. The remaining labs will be graded out of of 5, with two components to the mark: functionality (3 marks) and documentation/style (2 marks). Full marks for functionality are given if the program works correctly, less if not. Full marks for documentation are given if variable names are chosen well, and the code is properly commented and indented. Later in the course, good style will include proper design and modularization of your code.
Most lab assignments consist of programming assignments using the Java programming language. A handout describing each assignment will be available on the home page by the week prior to the beginning of the assignment. The lab assignments will take a substantial amount of your time. It is important to start as early as possible on your assignments and to avoid procrastination. Don't start a lab assignment during the lab in which it's due.
Although the assignments do not contribute significantly to your final grade, you should be sure to finish each assignment. The lab exam, held near the end of the term, contributes substantially to your grade. It is unlikely you will be able to score well on the lab exam if you do not independently complete all the assignments.
There will also be a Lab Project during the last several weeks. This is an opportunity for you to be creative and implement something interesting. Projects will be decided in consultation with the TAs. Project demonstrations will occur during the last lab period of the term.
The Lab schedule will be as follows this term:
| Assignment: | 1 | 2 | 3 | 4 | 5 | 6 |
| P0101 | Jan 11 | Jan 18 | Jan 25 | Feb 1 | Feb 8 | Feb 22 |
| P0102 | Jan 12 | Jan 19 | Jan 26 | Feb 2 | Feb 9 | Feb 23 |
| Assignment: | 7 | 8 | Lab Exam | Project | Project | Demo |
| P0101 | Mar 1 | Mar 8 | Mar 15 | Mar 22 | Mar 29 | Apr 5 |
| P0102 | Mar 2 | Mar 9 | Mar 16 | Mar 23 | Mar 30 | Apr 6 |
The recommended textbook for this course is:
Cay S. Horstmann, Computing Concepts with Java Essentials, Wiley, 1998.available at the University of Toronto bookstore. It may also be available at the Engineering Store, and/or Unitext.
All students should go through the Getting Started with UNIX guide to be able to use the Engineering Computing Facility computers in the laboratory. This is available online at http://www.ecf.toronto.edu/ecf/docs/. There are also other useful documents there.
In addition to the above books, every student in the course is expected to understand a number of basic concepts in computer hardware, computer software and computer science, which will be covered in the lectures, but will not necessarily be found in the textbook.
In addition to the lab work, there will be two quizzes, a lab exam, and a final exam. The final exam will be comprehensive, covering all material. The lab exam will involve writing java programs on-the-spot in the lab. The quizzes will be held during the tutorial period and test your grasp of the course material. The tests are on the following days:
The composition of the final grade is as follows:
What? When? Where? Quiz 1 January 29, 4-5 TBA Quiz 2 March 12, 4-5 TBA Lab Exam March 15-16 In-lab
No calculators and no aids are allowed for the final exam or quizzes.
Lab Assignments 5% Lab Project 10% Lab Exam 15% Quizzes 20% Final Exam 50%
If you run into some code that does not work, you have tried everything you know, and you are really stuck, sending mail to someone saying ``My program does not work'' will not elicit much sympathy. You should narrow down the problem by trying this:
Practice is the only way to learn programming. If you do only the assigned laboratory exercises of this course, you will not develop your programming skills adequately to earn a decent mark in this course nor to sustain you in the requirements of the second year computing courses. There are many programming exercises in the textbook.