20-CS-110 Autumn Quarter J. Franco, Instructor
----------------------------------------------------
Class Assessment Form
---------------------
Evaluation Note:
----------------
Since the primary purpose of this course was to place the minds
of students in as free a state as possible so as to foster creativity,
it was felt that pressure-inducing instruments for evaluation would
best be avoided. Therefore, instead of exams we had free-ranging
discussions over pizza and Homework was assigned but not graded.
Outcome Summary:
----------------
About 50% of the class consisted of CS non-majors, some of
these were graduate students. Of the 10 CS majors, about 50%
enthusiastically embraced the intent of the course. The rest showed
inadequate interest, for example by not submitting homework solutions,
not responding significantly or initiating new thoughts in class, and
even demonstrating acute laziness. The difference between the two
groups was striking.
Improvement Summary:
--------------------
Many freshman do not really know why they are here except they are
expecting a high paying job upon graduation. The idea that employers
will expect results has only vaguely crossed the minds of many. This
course intends to illustrate our mission with respect to career
preparation. Students should use the results of this course to adjust
study habits, if necessary and if they intend to remain in the College
of Engineering, or to move on to a field that their talents are more
suited to, for example Information Technology as taught by the College
of Applied Science or Information Science as taught by the business
school. The course could benefit from a more rigorous recruitment
program that 1) provides serious scholarships and other encouragement
to high school students that clearly are suited to our career targets;
2) screens students via serious interviews that determine the best
match of curriculum for given student talents; 3) encourages contact
with elementary and middle school students who show signs of strong
talent and interest in Computer Science concepts.
Knowledge goals:
----------------
1. Students will know what it means to be creative. Convergent and
divergent thinking will be discussed. Several puzzles will be
introduced and solved.
A discussion of this topic was based on material at these
locations:
http://gauss.ececs.uc.edu/Courses/c110/lectures/Week1/creativity.pdf
http://gauss.ececs.uc.edu/Courses/c110/puzzles/
This was one of the most successful segments of the course as
nearly everyone had something to say on this topic, even if
it was to express disbelief in the solutions to some puzzles,
particularly that squares marked A and B in
http://gauss.ececs.uc.edu/Courses/c110/lectures/Week1/checkershadow.jpg
are precisely the same color. Many freshman mistakenly believe
that visualization is the only language they need to succeed in a
technical field and they often ask me to re-express an idea in
terms of visualization. But the discussion on creativity
demonstrated clearly the need for learning several languages and
judging from classroom responses, this seemed to make an impact
on the more enthusiastic students.
Freshman who have not already made a personal goal of being
creative are typically not mature enough to begin thinking
creatively just by participating in classroom discussions on the
topic. Hence, attempting to evaluate based on the usual
instruments of homework and exams is probably not going to show
anything different than if the instruments had been applied
before the course.
However, discussion of this topic is important because it tells
students about some tools they will need to develop if they are
to succeed later in the types of careers that are targeted by our
curriculum. Significantly many freshmen really do not understand
why they are in college except that they wish to seek stable
employment and have been told that going to college will be the
way to achieve this goal (for some reason few faculty want to
admit this or even talk about it). The idea that our
preferentially targeted employers might expect creative effort
from their employees has not even crossed the minds of the
majority of students. Worse, significantly many students expect
to be doing work that might best be described as maintaining
existing technology - that is, work that the College of Applied
Science is best suited to prepare a student to do. Yet many
students have chosen the College of Engineering because they have
been told it is more prestigious and/or salaries are higher
(again, few faculty want to admit this or even believe it is true
- I know it is true because I have asked a large number of
freshman why they chose the College of Engineering). An
important aspect of this course is to make clear early the nature
of the jobs we target so the student may make an informed choice
about their career objectives. Although we would like to have
high retention rates, this objective is secondary to ensuring a
student places himself or herself on an educational path that
will lead to a satisfying career for the student and the
employer.
2. Students will know how Computer Science principles of modeling
and problem solving pervade numerous areas in modern society.
All of the homework problems show this: problems are elementary
representations of problems in cryptography, industrial
optimization, scheduling, and pattern recognition.
Homework success rate was high and I believe from class
discussion that students understand that at least there is some
correspondence between the homework problems and actual,
important problems.
3. Students will know what is meant by a combinatorial problem.
Combinatorial problems are concerned with arrangements, patterns,
assignments, schedules, connections and configurations. Several
combinatorial problems were presented in class and four were
studied in great detail in homeworks. The latter include the
classical problems: 1) Minimum Cost Network; 2) Topological Sort;
3) Shortest Path; 4) Pattern Matching.
The success rate on these homeworks was high, and I am satisfied
that by the end of the quarter at least 75% of the class
understood at least what the four problems mentioned above are
and hopefully they fall into the category of combinatorial
problem or at least fall into the category of classical Computer
Science problems.
4. Students will know how to use a modeling language such as Matlab
to set up solutions to some simple combinatorial problems.
I believe it is not reasonable to expect more than about 25% of
the freshmen we see to learn a language such as Matlab well
enough in one quarter to be useful in future quarters.
Although homework success was high, it is difficult to determine
whether what was presented by the student was actually understood
and retained by the student or was merely conjured up from
speaking with other students. I suspect the latter in most
cases due to past experience in communicating with freshmen.
However, email exchanges with some students (about 25%)
demonstrate understanding and even suggest improvements.
5. Students will know how to represent input data, in the form of a
matrix, so as to minimize the time needed to make the data useful
to a program.
Three different forms of representing data in matrix form were
used in homeworks 2, 3, 4, and 5. I do not expect all students
to be able to figure out what is the best form for a given
problem because I do not expect all students to be able to
program a solution to a given problem on their own. However,
I expect students to know that matrices represent a means to
organize data so that it can be used efficiently by a program.
Although homework success was high, asking questions of students
leads me to believe that most understand that matrices are
important in this role but all but perhaps 25% are highly fuzzy
on exactly how to organize data so that it may be used most
efficiently.
6. Students will know that algorithms are used to solve combinatorial
problems.
The response to this is contained in the response to the next item.
7. Students will know that algorithm efficiency and correctness are
extremely important in developing solutions to combinatorial
problems.
The second homework presented three elementary but significant
combinatorial problems that are the basis of many others. These
were 1) Minimum Cost Network (portrayed as related to power
distribution); 2) Topological Sort (portrayed as a problem in
scheduling industrial processes); 3) Shortest Path (portrayed as
an optimization problem in communications). Students were asked
to invent algorithms for solving these problems with the help of
a simple point-and-click graphical language which provided tools
such as stacks and queues for the students to use. They were
asked to keep track of the number of operations (clicks) required
for some short example inputs. The fourth homework asked
students to implement solutions in Matlab.
Although the success rate on these homeworks was high, I do not
have confidence that a high percentage of students retained
anything more than a superficial understanding of the reasons for
data structures such as stacks and queues and how to implement
and use them to solve combinatorial problems in Matlab. This
assessment comes from email exchanges and personal discussions
with most of the students. Perhaps 25% of the class was able to
take these ideas effectively into an introductory problem solving
course such as 20-CS-121.
8. Students will know the difference between morals and ethics and
will be able to define both.
The scheduled discussion of ethics was the liveliest of the
quarter. The depth introspection expressed by at least 25% of
the class was astounding. About 75% of the class felt compelled
to say something on this topic. A considerable number of actual
cases and outcomes were discussed. The most interesting
responses were associated with 1) conflicts between professional
ethics and morality, especially in medicine; 2) the
U.S. government allowing a Soviet spy to "steal" rigged
gas-pipeline-control software and then causing it to malfunction
resulting in "the largest non-nuclear explosion seen from space";
3) the Chernobyl disaster. Other notable cases discussed
included bridge failures such as at Astabula and the Firth of
Tay, automotive lapses such as the Ford Pinto and Chevrolet
Corvair, design lapses such as the Boston Molasses disaster and
the Hyatt-Regency walkway disaster, and U.S. space shuttle
disasters. The consequences of the disasters or misfortune
resulting from some of these lapses were discussed.
The codes of ethics of several professional societies were looked
at to show differences.
This topic was so engaging that the class chose to speak about
ethics related questions during one of the "pizza exams".
Comprehension Goals:
--------------------
1. Students will explain the development of pseudo-code as a first
step toward writing code.
This was covered in detail in Homework 2. The homework results
were successful but conversations show that most students are
fuzzy on this. Those that really want to understand this must
have the opportunity in later courses to try this again.
2. Students will explain the use of arithmetic and logic operators
in the development of algorithms.
This was covered in detail, but perhaps not comprehensively, in
http://gauss.ececs.uc.edu/Courses/c110/lectures/Week3/
About 25% responded enthusiastically in class. This was higher
than I expected and resulted in the material being discussed for
an entire week.
3. Students will explain the basics of modulo arithmetic and how
this may be used in cryptography.
This was also covered in detail in
http://gauss.ececs.uc.edu/Courses/c110/lectures/Week3/
Modulo arithmetic continues to befuddle most students. This
is a topic that could easily be learned in high school. But
most freshmen that I encounter cannot even tell me what a
remainder is! Perhaps after seeing this material several times
more, those having difficulty with this material now might
eventially begin to understand it.
4. Students will explain the use of control constructs such as if,
for, and while in algorithm design.
All students have been able to tell me what that a 'for'
statement is used to repeat executable statements. Many do not
understand the use of a loop counter such as in 'for i=1:100' -
for example, many students cannot successfully use 'i' to iterate
through the elements of an array - even though much effort is
spent in class discussing this topic every lecture beginning with
(roughly) the fourth one. Most can recite using 'for' when the
loop count is known in advance and 'while' when the condition for
termination must be checked at each iteration. Most can recite
the syntax of 'if'. All but about 10% can write close to working
code for an elementary problem such as writing code to guess a
number chosen by some individual using yes/no questions.
5. Students will explain the conversion of some data types so that
some operations can be applied to data.
This was not emphasized. Perhaps it should be removed given all
the important concepts that befuddle a large number of students.
6. Students will explain the importance of professional ethics and
be able to provide notable examples of breaches of ethics in
several domains.
This was discussed under point 8 of Knowledge Goals.
Application Goals:
------------------
1. Students will be able to turn pseudo-code for some elementary
applications such as Minimum Spanning Network, Integer Deadline
Scheduling, and Shortest Path into code.
I now believe this goal is too ambitious. Perhaps 10% of the
students should be expected to be able to turn pseudo-code into
code, say Matlab or C++. Another 25% can be expected to do so
with some help - 40% by looking at working code that solves
similar problems, 60% with help from a person with significant
experience. Another 25% at least understand that there are steps
for writing code that include formulation of the problem,
realizing an algorithmic solution with plausible chance of being
efficient and correct, using pseudo-code to express the
algorithm, and turning the algorithm into code. However
expecting this group to succeed in any of those parts is asking
too much. The remaining students appear to have no real interest
in the technical component of the course except to check some box
on some form.
The goal should be changed to expose students to steps used to
write code for solving a problem that has a solution in the less
than 300 lines of Matlab category.
2. Students will be able to use arithmetic and logic operations to
encrypt and decrypt data using public and secret key block
ciphers such as RSA and the Karn symmetric key algorithms.
This was the objective of homework 3. Students were exposed. I
do not believe they understood the mathematics. They did
understand what encryption is for. I think many were not really
convinced of the importance of cryptographic techniques even
though they would say computer security is important - most
students do not check whether visiting a site can do harm and
they plunge headlong into webpages that sound enticing but are
known to be able to victimize.
3. Students will be able to code, run, and debug programs for
manipulating Mindstorm robots.
This was successful with the help of an experienced teaching
assistant. All groups completed all steps they were assigned to
perform. Even if details were not retained, at least they were
exposed to the control of machines through software.