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.