most recent semester
Principles of Computer Science I
ITEC120 archive
ITEC Tutor and Peer Instructor hours
ITEC120 is an introduction to programming.
It approaches programming as problem-solving, emphasizing:
-
A methodical procedure for approaching writing programs,
-
Writing programs which not only give correct answers,
but which are also well-designed and clearly written.
-
Writing test cases before code,
as a technique for understanding the problem better
before jumping into coding1
The material is approached by
taking a selected problem,
and seeing how to program a solution
(introducing language features only as motivated by the problem).
Although the course currently teaches these concepts using Java,
the content transcends particular langauges and environments.
The only pre-requisite is
some sort of previous programming experience
(or permission of instructor),
and
high school
algebra2.
Most students find the course demanding, but also rewarding.
Those who want a preparatory course in programming find it helpful to take
ITEC 109 before taking ITEC 120.
More concretely,
here is a partial list of topics;
see also
a more complete list.
-
designing classes; deciding on appropriate data representation
-
local variables and fields (and the differences between them)
-
writing and reading documentation (javadoc)
-
references and aliasing; pass-by-value
-
objects which contain (references to) other objects
-
class fields and methods (Java's “static”)
-
output: the difference between returning a string and printing to the console
-
input: keyboard, file, URL, string
(all via the abstraction java.util.Scanner)
-
re-assigning to local variables
-
while loops, for loops
-
arrays (one-dimensional)
-
two-dimensional problems: a loop to repeatedly call a function
(which might itself contain a loop)
-
Brief introduction: polymorphism, inheritance, overriding
Course pages, past and present
Can't find (much) info for a particular semester?
This might be due to that particular section using
Blackboard (WebCT).
(Blackboard pages are available only to students enrolled that particular semester).
1
This is similar to Extreme Programming's “test-driven design”.
Although one purpose of stressing testing early in CS1 could
be to ingrain this methodology early,
the actual reason it is used here is more practical:
writing two to three test cases helps clarify both
(a) the problem statement (what the function is supposed to compute),
and
(b) what steps are involved in computing the answer.
Both of these result in students completing their assignments more easily.
↩
2
In particular, the only concept needed from algebra is that
that of a function:
something which takes an input and returns a value.
Learning to program reinforces the distinction
between calling a function and defining a function.
While this is easy to say,
it takes a while before this concept is ingrained.
↩
most recent semester