INFSCI 0012 - Introduction to Programming
(Spring 2003, CRN 34882)
[ Formal Data | Course
Tools | Syllabus | Course Books | Course
Schedule | Course Materials | CourseWeb
- To understand the nature of programming as human activity
- To learn and experience main components of programming process
- To understand main control structures of procedural programming languages
- To learn and being able to use major programming patterns
- To understand the principles of data storage and manipulation
- To get prepared for the more advanced programming courses such as IS15 and
Upon satisfactory completion of this course, students will be able to write
small meaningful C programs that includes major control structures (such as
loop, selection), programming patterns (such as maximum or sequential array
processing), and data types. On the way to that goal we will have to learn a
reasonable subset of C language, explore many working examples and write multiple
The course is targeted to the students who have no or very little programming
knowledge and experience. Those with some good programming background are strongly
advised to proceed directly to IS15. Vice versa, the students who experience problems
when taking more fast and steep programming courses such as IS15 are advised to
take IS12 first.
Course Topic Overview
- Karel the Robot: language and environment
- Simple Karel programs
- Defining new instructions in Karel
- Selection control structures in Karel
- Loop control structures in Karel
- Introduction to C: First program, compilation, syntax errors
- Variables, data types, and arithmetic expressions
- Comparisons, simple conditions, while loop
- More Data Types, conversions, constants, for loop
- Conditional statement, complex conditions
- Embedded while and if
- Arrays. Array processing with for
- Functions, parameter passing
- Character arrays and string processing
- Two-dimensional arrays
- Pointers and pointer arithmetic
Expected Course Load
Programming courses are traditionally among the hardest and most time consuming
courses. You will have to do a lot of work each weak to follow the course: do
your readings, run and explore program examples, solve programming exercises
and homeworks. To help the complete beginners to master the subject, we have
provided several learning tools. These tools do help
a lot to those who use them - but it also requires time. To be on the safe side,
plan to spend at least 6 hours outside of the classroom each week for this course.
If you have some programming background, you may need less than 6 hours. However,
some students may need more than that. Note also that you need to invest your
time regularly. Almost every lecture is build upon material presented in several
earlier lectures. A failure to comprehend just one lecture may get you out of
track for the rest of the course. If you have too many other commitments this
semester to allocate enough time every week, consider taking this course later.
Assessment and Grading
Components of the Final Grade
Course assessment includes quizzes that will be offered through the course,
homework programming assignments, and two exams - midterm and final. The final
exam is not cumulative. You final grade has three components: work over the
duration of the course, midterm exam grade, and final exam grade. Grade for
the work over the duration of the course is a sum of your assignment grades,
quiz grades (we will have a quiz almost every week, but two lowest quiz grades
will be excluded) and extra credit points. A value of a 5-questions quiz is
5 points. A value of a homework assignment is between 6 and 12 points (depending
of the complexity of the problem). The value of each exam is 100 points. Exam
grades will be scaled to adjust to the class performance.
Your progress will be measured as a percentage of the max possible points:
(assessment_points + quiz_points + activity_points + exam_points)/(max_assessment_points
+ max_quiz_point s+ max_exam_points) * 100%. Using this formula you can always
check where you are standing. Score < 50% corresponds to F, 50-62.5 is D
range, 62.5-75 is C range, 75-87.5 is B range, and 87.5-100 is A range. Lower
and upper parts of each range corresponds to - and + modifiers.
Extra Credit Points
You can earn extra credit points for several things such as asking a good
question in a discussion forum, providing a helpful answer in a discussion forum,
helping during the lecture, attending additional "catch-up" sessions, finding
errors in slides and examples. Extra credit points will be added to your assessment/quiz
results and can compensate missed your points. You can earn up to 15 extra credit
points, however, together with these points, your can't earn more than max_assessment_points
+ max_quiz_point for the work over the duration of the course.
Submitting and Naming
All assignments has to be submitted in paper form on the due date before or after
the lecture. Submit a printed copy of the program code and (for C part of the
course) a sample output. In addition, the program code of the assignment in text
(ascii) format has to be submitted electronically using CourseWeb's dropbox at
any time by or on the due date (your submissions are time stamped!). Naming conditions
for electronic submissions are strict. When submitting via the dropbox, the link
to your file should be named programX where X is the assignment number.
You will lose 0.1 pt for every misnamed link starting from assignment 3. All submitted
work should bear the number of the assignment/quiz and the author's name in printed
form inside the header comment. You will lose 0.1 point for every solution that
lacks the header comment with this data. By submitting work under your name, you
are indicating that you have completed the assignment. This means that
you should be able to completely explain every line of code in your program. Failure
to be able to account for your coding decisions will be reflected in your grade.
You are expected to be fully aware of your responsibility to maintain a high
quality of integrity in all of your work. All work must be your own, unless
collaboration is specifically and explicitly permitted. You are welcome to discuss
the solution of programming exercises that are not graded. You are even encouraged
to do it within study groups and using CourseWeb discussion forums. For graded
homework assignments the only acceptable collaboration is to discuss the algorithm
(the idea) of the solution. No collaboration on the level of program
code is permitted. Every student has to write own program solution from the
beginning to the end. You should not view or copy the code written by other
students, neither should you share your code with others.
Any unauthorized collaboration or copying will at minimum result reducing credit
for the affected assignment (50% for the first case, 100% for further cases)
and may be subject to further action under the University
Guidelines for Academic Integrity. You are expected to have read and understood
these Guidelines. A document discussing these guidelines was included in your
Class attendance, while not mandatory, is required if you want to succeed in this
course. While most of the material covered by the lectures could be found in course
books, for most of the lectures the order of presentation does not match any
book exactly. Some material is not sufficiently covered by the book. Finally,
all lectures include animated demonstration of examples. We will record the attendance
at every lecture, however, this is done for course monitoring purposes and the
will not directly influence your grade. If you have missed the lecture, make sure
you have a copy of the slides. Spare copies can be picked up from a folder near
the instructor's office or printed from the Web.
Late Submissions and Resubmissions
The due date for assignments is strict. If a dropbox or a paper version of your
homework solution is submitted after the due date you will incur late days.
For extreme circumstances you have 5 late days to use at your discretion (i.e.
you may use them on a single assignment, or distribute them over several assignments).
Outside of this limit late assignment will not be considered. Weekends, holidays,
or break days are not counted as late days.
You can also improve your submission or fix errors in your submission until
the due date. Simply upload the new version adding "_v2", "_v3", etc to the
name of the link to the program (i.e., program3_v2). No assignment can be submitted
or resubmitted after it was analyzed during the lecture.
If you miss a quiz or and assignment, you will receive a zero. There will be no
make-up quizzes, but the instructor will drop one lowest quiz score. There are
also no make-up assignments since most of the assignments will be analyzed in
the class on or shortly after the due date. Missed exams can be made up in cases
of extreme circumstances.
Office hours are an opportunity for you to clarify details you may have missed
in class or to resolve a serious problem you have encountered when working on
an assignment. They are not a place to get a "second run" of the lecture
if you missed the class or obtain answers on the assignment. If you come to office
hours with a programming problem, make sure that you have access to an electronic
version of your code (use dropbox or bring a floppy). If you are not able to attend
office hours due to your work schedule, you can arrange an appointment with a
GSA or the instructor.
If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact both your instructor and
Office of Disability Resources and Services, 216 William Pitt Union, (412) 648-7890 / (412) 383-7355 (TTY) as early as possible in the term. DRS will verify your disability and determine reasonable accommodations for this course.
Copyright © 2003 Peter Brusilovsky