Course Assessment Report College of Engineering, The University of Iowa

advertisement
Course Assessment Report
College of Engineering, The University of Iowa
(Revised January 2012)
Course # and Name: 059:006 Engineering Problem Solving II
Semester and Instructor: Fall 2011, Terry Braun, Justin Garvin
Coordinator: Terry Braun, BME Department
Student Head Count: 192
Teaching Assistants Head Count and FTE: 8 (2 FTE)
Catalog Description: Engineering problem solving using computers; introduction to digital
computations, problem formulation using a procedural high-level language; structured, top-down
program design methodology; debugging and testing; introduction to use of software libraries;
examples from numerical analysis and contemporary applications in engineering. Co-requisite:
22M:031.
I. Course Goals and Program Outcomes
Indicate the Program Outcomes associated with each Course Learning Goal along with the extent
(moderate or substantial) of these associations
Course Learning Goal
1. Students will have a thorough understanding of the for, while and do-while
looping structures using the C programming language.
2. Students will have a thorough understanding of logical operators (AND, OR) and
selection statements using the C programming language.
3. Students will understand how to design, implement and test an algorithm to solve
an engineering problem using the C programming language.
4. Students will understand how to use functions to divide an algorithm into
component pieces using the C programming language.
5. Students will be able to demonstrate goals 1-5 using MATLAB.
Program Outcome
a(●), e(●), k(●)
a(●), e(●), k(●)
a(●), e(●), k(●)
a(●), e(●), k(●)
a(●), e(●), k(●)
Notes: ○ denotes moderate contribution to the outcome ● denotes substantial contribution to the outcome
II. Program Outcomes (provided for reference).
New graduates from the College of Engineering Undergraduate Programs will have:
(a) an ability to apply knowledge of mathematics, science, and engineering
(b) an ability to design and conduct experiments, as well as to analyze and interpret data
(c) an ability to design a system, component, or process to meet desired needs within realistic constraints such as economic,
environmental, social, political, ethical, health and safety, manufacturability, and sustainability
(d) an ability to function on multi-disciplinary teams
(e) an ability to identify, formulate, and solve engineering problems
(f) an understanding of professional and ethical responsibility
(g) an ability to communicate effectively
(h) the broad education necessary to understand the impact of engineering solutions in a global, economic, environmental, and
societal context
(i) a recognition of the need for, and an ability to engage in life-long learning
(j) a knowledge of contemporary issues
(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
III. Assessment
Part A. Log of Recent Improvements, Recommendations and Comments. Append a brief, dated,
summary of improvements and recommendations made during the current offering along with
motivations and significant comments. If the course is meeting its objectives and no comments are
needed, say this. Six year and older entries may be deleted.
SUMMARY OF PRIOR REMEDIATION ACTIONS: (and their estimated effect)
In 2006, the staff felt that the discussions sections should be held in classrooms with computers. In 2007, the
discussion sections were rearranged so that every discussion section occurred in a computer lab.
In 2007 the staff addressed students’ complaints that the homework was taking too much time by carefully
reviewing each homework assignment to ensure that the problem were not too difficult or time consuming. In
addition, practice exams were provided online so that the students could drill themselves on the relevant
concepts to ensure that they were properly prepared for the exam. This year students did not complain about the
amount of time consumed in solving homework problems.
In 2007 we also discussed developing an online tool so that students could assess their basic skills before
attempting the homework problem. We developed such a tool, then abandoned it because pilot testing suggested
that it did not significantly improve the student experience, primarily because the tool was too complex.
In 2007 we discussed moving all discussion sections to a classroom in which each student will have their own
laptop. This was achieved and the discussion sections went quite well and the students enjoyed the programming
experience.
In 2007 we changed the syllabus to eliminate the concentration on pointers and structures in order to increase
the course’s emphasis on design and the study of MATLAB. Student comments and the experience of the
professors suggests that this approach leaves holes in the exposition. We plan to modify the course substantially
next year and continue to avoid pointers, in the hope that the revisions may satisfactorily cover the holes in the
exposition.
In 2008 we substantially changed the structure of the course by eliminating lectures, dividing the course into six
sections and holding these sections in the laptop classroom in 2, 1:15-length sections each week. In addition,
the course learning goals recommended in the previous Course Assessment Report were adopted.
In 2008, we recommended that the course goals be changed to the following.
Students will have a thorough understanding of logical operators (AND, OR) and selection statements
using the C programming language.
Students will understand how to design, implement and test an algorithm to solve an engineering
problem using the C programming language.
Students will understand how to use functions to divide an algorithm into component pieces using the C
programming language.
Students will be able to demonstrate goals 1-5 using MATLAB.
The following recommendations are made (Spring 2010):
1. There is urgent need of a C development environment that student can use outside of class staring from
the beginning of the semester. Eclipse would be a nice choice if a C compiler were available for
Windows.
2. The current recommendation for lecture structure is: 20 minutes of lecture followed by 50 minutes of
in-class programming. However, especially earlier in the semester (first 2-5 lectures), instructors may
find that they need to spend more time lecturing to bring students up to speed. This is only a suggestion,
as other lecture styles may work too, such as demonstrating functionality of C, have the students try it,
then repeat.
3. A clear, and concise document on a cheating policy should be written (and tailored by each year's
instructors).
4. Keep the reading quizzes and in-class programming problems. Discard the "programming quiz."
5. The current class used 5 take-home programming assignments. Based on this, it is recommended that at
least 7 assignments are needed (5 C, and 2 Matlab).
6. Material needs to be developed and added (at least 1 lecture) dedicated to the topic of systematic
strategies for debugging (divide and conquer, profiling, debuggers, etc.)
7. Managing all of the quizzes and assignments on the Icon website can be problematic. The original
instance simply numbered quizzes (Quiz 1, Quiz 2, … etc.). This has the problem of making it difficult
to know what day each quiz occurred without inspecting timestamps (which is possible, but requires
actually looking at the quiz). It has been proposed to list quizzes by date (Quiz 1 – 01/25/2010, … etc.).
However, this has the flaw that if a quiz is delayed, then all subsequent list dates have to change.
Currently there is not a good solution.
8. Matlab – the book is fine. Recommend only covering chapters 1-6. Chapters 2 and 5 probably need
two lectures each to cover the material. It is suggested that developing a mechanism to have the
students type in the examples before class would be beneficial.
9. Reading quizzes – the spacing of days and topics needs to be adjusted. For example, covering 50 pages
from Tuesday to Thursday is not optimal. Conversely, covering 2 pages from Thursday to Tuesday is
bad pacing as well.
10. "Clickers" may increase student engagement and participation. (Maybe SWD could develop a software
clicker as part of a project, so students could use the laptop as a clicker, as opposed to introducing more
complexity to the course through another device.)
During the Fall of 2010 (note, this was the first offering of this course for Fall), the following changes were
made.
1) “As per the suggestion from Spring 2010, reading quizzes” were utilized and “programming
quizzes” were not used. Reading quizzes had questions presented in random order.
2) A smaller number of PowerPoint slides (less than 10 slides) were used during class to convey
material.
3) Fewer MatLab chapters were covered (2-5).
4) 6 take-home programming assignments were assigned. It is recommended to number these 1
through 6 (instead of 0 through 5).
5) We recommend that stricter cheating detection and enforcement policies be used.
Spring, 2011, the following changes were made:
1. A stricter cheating policy was adopted. In the past, if a student got caught cheating on one
assignment, that student would receive a zero for that particular assignment. The new policy was
designed so that if a student got caught cheating on an assignment, the student would receive a zero
for the entire homework section (roughly 30%) and a letter would be written to be put in the
student’s permanent file in the Dean’s office.
2. CodeBlocks development environment was used both in class and for home development in a
portion of the sections. Other sections used Gedit/gcc. Gedit/gcc has the advantage that it
emphasizes the separation between compiler and development/editing. It also offers more exposure
a Unix-like environment – which is also used in later courses. CodeBlocks is more portable to
Windows (which is more widely used by students).
In Spring 2011, the following changes are suggested:
1. A pre-course and post-course exam could be used to assess Course Learning Goals.
2. In the past, letter grades have not been assigned to mid-term exams because of the size of the
course, and synchronization across multiple instructors and sections makes this onerous. Future
instructors may consider assigning midterm exams to facilitate collection of data on “Course
Learning Goals.”
3. Adoption of clickers could be useful.
Invariably, the following exchanges will occur between students and instructors/TAs. Typically, it increases
with frequency in the later and more difficult assignments. It can be very demoralizing for the instructors and
TAs. Instructors and TAs have described this as “the grind” and that it “wears you out.” These exchanges are:
1. A few hours before an assignment is due, there will be a rash of questions (either in person or by e-mail)
that demonstrates that the students have waited until the last minute to work on the assignment – and
thus has no real hope of completing it. On the extremes, an instructor may respond with, “Well, clearly
you waited until the last minute, it is too late to help you.” This seems to be particularly mean and not
instructive. On the other end of the spectrum, the instructor could spend several hours trying to bring
the student up to speed while being careful not to divulge too much information so that the student ends
up with a plagiarized solution. This is a huge burden on the instructor and would take time away from
assisting other students. It may be useful if there was some mechanism for a student to demonstrate
how much time they have already spent on the problem. One way to do this is to ask for pseudocode or
a flow diagram.
2. Another similar question is when a student says, (usually 5 hours before an assignment is due) “I am
completely lost, and have no idea where to begin.” Generally, this most likely means the student did not
start on the assignment soon enough to spend enough time to find a reasonable solution. One strategy to
mitigate against this would be to talk about it early and often in the course. Explain how it is really not
a reasonable question, discuss how to not end up in this situation – and that it is just an admission of not
starting early enough.
3. Never have an assignment due late at night – this appears to exacerbate the situation. 5:00 PM at the
latest.
Fall 2011:
During the Fall of 2011, the primary change that was implement was the use “clickers” during class. Professor
Braun used clickers with in-class questions and kept track of the number of questions answered correctly (only
as an exercise for proof of concept). This proved to be modestly difficult as the “clicker” software only provides
a clicker ID and the number of correct responses. Clicker IDs had to be cross-referenced with student IDs to
assign grades. Professor Garvin used the “clickers” on for presence/absence. Professor Braun scored questions
in this manor as well.
Perhaps the most difficult aspect is that slides (with questions) have already been prepared for the course. So
each instructor would need to develop novel questions/slides for each lecture. This represented a significant
amount of additional work. Professor Braun would probably not use clickers in the future.
Clickers are difficult. The questions are currently at the beginning of slides. We typically made slides available
at 8:00 AM (one ICON site, all sections). That means the questions and answers are exposed. So the instructor
can have a different set of slides with different questions -- which is much more work. Alternatively, there
could be a different set of slides with questions (available after all sections are over with), and lecture slides,
available at the beginning of the day.
SUGGESTED CHANGES (from 2011):
Teach a systematic strategy for debugging programs.
When starting functions, first introduce functions alone (no parameters) and the shifting of program control flow
to another part of the program. Then add parameters in a subsequent lecture. A lecture would need to be added
(and one subtracted from somewhere).
The course should spend 1 day on Linux.
Need an assignment on style guide. Should do an example on style guide in class.
No compile, no points. HW submissions -- if it doesn't compile, students receive 0. It would simplify grading.
Remind TA's -- put in 0 for grades, don't leave something blank.
ADDITIONAL IDEAS:
Additional Ideas that were discussed, but are not necessary suggested at this time:
One idea we came up with was to cut the number of in-class assignments by half (call them weekly
assignments). There would be an assignment due every week. We could keep (or get rid of) the 2-week
assignments.
Essentially, Tuesday would be lecture day. It would be used to a) introduce the new material (20 mins), b)
discuss/go over the previous weeks in-class assignment or HW. Show examples of bad ones -- and how to fix,
and good ones. Cover the common mistakes. (20 mins) c) introduce the next in-class assignment (remaining
time).
The Thursday lecture would be primarily lab/coding day. Could take a few minutes to review/introduce
material. Then the weekly assignment would be due Friday, 5:00 PM. TA's would use the Tuesday class time
to grade the submissions from Friday. This way more time is spent on going over the problems in class.
RECOMMENDED CHANGES TO COURSE LEARNING GOALS:
None.
Part B. Quantitative Assessment Results. Enter in the table below an assessment of the percentage
of passing students achieving mastery (B+ to A+ level achievement), competency (C- to B level
achievement) or exposure (D- to D+ level achievement) for each course learning goal.
To make room for the rightmost “new” entry, delete the leftmost “old” entry.
SP
2010
Course Learning Goal And
Assessment Basis
Fall
2010
SP
2011
Fall
2011
54/42/4
195/129/20
113/61/11
1. Students will have a thorough
understanding of the for, while and do-while
looping structures using the C programming
language.
2. Students will have a thorough
understanding of logical operators (AND, OR)
and selection statements using the C
programming language.
3. Students will understand how to design,
implement and test an algorithm to solve an
engineering problem using the C
programming language.
4. Students will understand how to use
functions to divide an algorithm into
component pieces using the C programming
language.
5. Students will be able to demonstrate goals
1-5 using MATLAB.
Assessment:
-- in-class programming assignments
M/C/E
-- homework assignments
M/C/E
-- reading quizzes
M/C/E
-- exams
M/C/E
-- overall
M/C/E
Part C. Please attach a current syllabus.
59:006 Engineering Problem Solving II, Fall 2011
Course Policies and Procedures
Instructors:
Section 1 and 2:
Instructor: Justin Garvin (justin-garvin@uiowa.edu)
Class Room: 2217 SC
Time: 8:00am-9:15am (section 1), 11:00am-12:15pm (section2) on Tues/Thurs
Office hours: 9:30am-10:45am Tuesday/Thursday in RM 1139 SC
Section 3:
Instructor: Terry Braun (terry-braun@uiowa.edu)
Class Room: 2217 SC
Time: 3:30pm-4:45pm (section 3) on Mon/Wed
Course Description:
An introduction to programming using the C programming language and MATLAB. Students learn
how to plan, execute, diagnose failures, and iterate through a logical design. The C language
programming introduces low-level concepts of data types, logic flow, and compiling programs, while
the MATLAB portion emphasizes interactive manipulation of complex data to solve engineering
problems.
Learning Objectives:
1. Students will have a thorough understanding of the for, while and do-while looping structures using
the C programming language.
2. Students will have a thorough understanding of logical operators (AND, OR) and selection
statements using the C programming language.
3. Students will understand how to design, implement and test an algorithm to solve an engineering
problem using the C programming language.
4. Students will understand how to use functions to divide an algorithm into component pieces using
the C programming language.
5. Students will be able to demonstrate goals 1-4 using MATLAB.
Background:
The course will meet in a computer lab. Each day students will 1) complete a reading assignment, 2)
take a reading assignment quiz (due 8am the day of class), and 3) write a program in-class.
The class will begin with a discussion led by the professor, followed by an in-class programming
exercise (TAs are available during class to provide help on the in-class assignment). There will also be
roughly 6 outside of class homework assignments. During the summer, the schedule is compressed so
the class meets four times a week rather than twice a week.
Textbooks:
This course will use two textbooks: C How to Program, by Deitel and Deitel, 6th Edition, Prentice
Hall Publishers, ISBN: 978-0-13-612356-9; and an Introduction to Matlab 7 by Etter ISBN: 0-131474792-8.
Clickers:
We will be using "clickers" in class. More information will be provided in class.
Getting Help:
The in-class assignments are designed to create opportunities to ask the professor and TA's your
programming questions. The at home assignments are designed to be completed by
yourself. WORKING TOGETHER ON HOMEWORK IS CONSIDERED CHEATING and will not be
tolerated. Think of these outside of class homeworks as take-home quizzes -- you must work alone!
If you need extra help, please visit the TA or professor during office hours or send an email.
Computer Accounts:
You will need an account on the college's Computer Support Systems (CSS) infrastructure. If you do
not already have an account, see http://www.icaen.uiowa.edu/for instructions or go to the CSS office
on 1st floor (1253 SC).
Assignments:
You will normally have 1 reading assignment and one on-line reading quiz due every class day.
Approximately every other week (this may vary depending on difficulty) you will also have one
homework assignment. Homework assignments are to be worked onindividually, unless explicitly
stated otherwise. While you may discuss the problem specification with other students, the work you
turn in for grading must be your own.
Unless otherwise stated, all homework should be turned in to ICON by the time specified on ICON.
If you complete your in-class assignment early, you are encouraged to help other students, but you
should try to help them learn, not do their work for them. Don't expect to hurry through your work and
leave class early.
In addition, we are going to drop two of your lowest scores for your in-class assignments and two of
your lowest reading quiz scores.
Exams:
There will be two (2) exams and a final exam.
Midterm exams are in
MH AUD have been reserved for the "059:006:001-006 Midterm Exams" from 8:45-10:15pm on:
Thursday, Sept 29, 2011
Tuesday, Nov 8, 2011
Makeup Exams:
For those having verified conflicts with the exam schedule, makeup exams will be arranged on an
individual basis. In order to arrange a makeup, you must contact your instructor or TA by email at
least one week prior to the scheduled test date. Serious illness, of course, is an exception to this
policy. All cases of sudden illness must be verified with a Doctor's note through the Dean's office to
arrange an "after the fact" makeup exam. Approval of verified conflicts will be at the discretion of the
instructor.
Retrieval of Graded Materials:
All exams will be individually returned in your class. Please allow a minimum of one week for grading
of exams and homework assignments.
Final Course Grading:
The breakdown of the parts that contribute to the final grade are as follows:
Homework (outside of class)
Reading quizzes
In-class programming submissions
Clicker
30%
15%
18%
2%
Midterm 1
10%
Midterm 2
10%
Final
15%
Incompletes:
A grade of "I" will be given only for cases in which there are documented circumstances beyond the
student's control; it is not a substitute for "F".
Academic Honesty (Cheating):
See the full statement on cheating under the Content tab. To summarize the policy:
Cheating is a very serious academic offense and is grounds for SERIOUS punishment in this course. If
caught cheating once, you will RECEIVE A ZERO FOR ALL ASSIGNMENTS, which amounts to
30% of your grade. Also note that if two assignments are similar enough to represent the same piece
of work, BOTH PARTICIPANTS RECEIVE THE PUNISHMENT. We will not distinguish between
the original and the copy.
Briefly, cheating in this class means working together. Do not copy from anybody, do not take
anyone's code and try to change it in order to "make it your own". Do not even talk with one another
about the homework other than the problem specifications. You will get caught! We have a program
that runs through all of the assignments once they are turned in and checks for similarities. If the
similarities are too coincidental, all parties will receive a zero -- both the copier and the copyprovider.
DO NOT ATTEMPT to fool the system and cheat, I guarantee you will get caught as it as happened
many times in the past. If you are having problems with the assignment, see your instructor or TA.
Remote Access:
Lots of information is available on this ICON site. Look around for it under the content tab/link.
Persons With Disabilities:
We would like to hear from anyone who has a disability which may require some modification of
seating, testing or other class requirements so that appropriate arrangements may be made. Please see
the professor or teaching assistant after class or during office hours.
Privacy:
Grades and other class data will be posted on ICON. Your grade information will be only available to
you, although statistical information about all the students' grades will be available to all students. If
the grades are not yet posted on ICON, you can assume that they are not yet available.
Class Participation:
Please feel free to ask questions when you don't understand something that is presented in the lecture.
Further, more material will be covered in lecture than is simply "in the book." You are responsible for
all reading and all material presented in lecture.
Reading Assignments:
Take them seriously and always attempt to complete reading before class each day. Don't forget to do
the reading quizzes each day.
Recommendations for Success
Don't get behind.
Do master material. Try to work out examples from the book, even if we didn't get to cover them in
class.
Do the reading diligently.
Do outline notes and reading. Review the text, your homeworks, and lecture notes to prepare for
exams.
Don't get behind!
Don't simply cram for exams -- keep up all the way along.
Don't just study problems. The concepts in this course can be tested through asking you to solve
original problems on exams. Be prepared to think.
Do take advantage of office hours to get extra help. Communicate with your instructor or discussion
section leader if you are getting into trouble. Don't wait until the last minute to do this.
Do keep backup copies of your computer files.
Don't wait until the last minute to submit your assignment electronically.
Did we forget to say, don't get behind?
Finally, a note of warning.
This is a demanding, difficult course -- if you work hard. If you do not work hard, or get behind, it is
not hard -- it is impossible. Do not get behind. Start work on assignments as soon as they are given. Do
not underestimate the demanding nature of this course. Expect the system to crash the night before
your program is due. Aim to have a homework assignment done the day before it is due. This practice
will be important when you get a job. After you graduate, your boss will not be impressed by claims
that you lost your files because the system went down. He or she will simply expect you to deal with it,
or better yet, to have planned ahead to overcome unforeseen problems.
59:006 – Engineering Problem Solving-II
Cheating Policy
Fall 2011
The Policy: In a word – Don’t.
The Policy: In a few more words – Cheating will not be tolerated. A single detected incident will almost certainly result in
your failing the course. And cheating is very unlikely to go undetected. – This is a fair warning. This policy has changed for
this course from semesters prior to Spring 2011, but this policy is the standard policy for the College of Engineering.
If this isn’t clear, read on. On second thought, read on even if you think you understand …
Cheating is defined as any attempt to claim credit for work which is not entirely your own. This is a very absolute and strict
policy. It includes discussing the approach that you or your classmates or anyone else outside this class might take to the
same problem. It includes using any part of a solution that someone other than you created in your solution. If you still need
more clarification, read on…
DO NOT COPY
DO NOT COPY it. Do not e-mail it. Do not transfer it on a jump drive and give (or take) it. Do not print off someone
else's solution, and look at it while you type it in for yourself. That is copying. You need to compose your own lines of
code, your own variables, your own logic, your own comments, and type each and every character yourself. Also, protect
your work. There have been instances of people “dumpster diving” to acquire printed copies, stolen jump drives and room
mates accessing a computer and stealing files. There may be a few instances where an instructor or TA will give you part of
a program or "stub" to use as a starting point, but those cases will be rare, if at all. Think of Homework as "take-home
quizzes or exams." There will be many opportunities to work in teams in other classes. But not in this one!
Unsuccessful work avoidance techniques previously tried in this course (aka cheating)
Here is the extent to which some students in the past have gone to avoid performing work for this class.
One industrious student posted an assignment to a "programmer for hire" web page, and hired someone to
write a solution for them. The solution submitted was clearly not the student's work as it used very advanced
topics that were not even covered at that point in the course (e.g., pointers and data structures). Upon interviewing
the student, it was clear that this was not the student's work. This student received a zero and eventually failed the
course. Not surprising, the student was unable to do well on the exams since the student did not perform any of
the work on homeworks.
Two not-so-industrious students once submitted "exactly" the same program. By "exactly," I mean that
not even the name at the top of the program was changed.
Fred and Barney received a zero on all homework assignments for submitting homeworks that were too
similar. Fred was vehement about his innocence, he demanded that we meet so that he could describe his program
and display that he understood how the program worked. I watched as he logged into his account. He went to his
homework directory (i.e. "folder"). In his directory were two files: HW4.c, and hw-4.c Fred walked me through
HW4.c and gave a very convincing argument about his knowledge of the problem and a description of his
solution. When he was done, I asked if I could examine his program. I immediately opened the file "hw-4.c" and
found a copy of "Barney's" submission. Fred did not deny the accusation after that.
But won't my solution look like everyone else's?
The reality is that we utilize very sophisticated software tools for comparing student programs to detect high-similarity and
collaboration. The level of similarity flagged by these tools is too high to be coincidental. We can and do compare every
submission against every other submission in every other section. We also compare to a Google database of programs that
you might find if looking on the web. We perform the same kind of plagiarism detection done in most Rhetoric and Writing
classes. For a class of 400 students, a minimum of 79,800 comparisons is needed. If you are thinking we are bluffing, read
on. If your instructors or TAs had to perform these 79,800 comparisons, the task would be impossible – obviously.
However, it takes the computer about 30 seconds to perform this operation. Every pair of program files that is deemed too
similar is manually inspected by TAs and instructors, and if cheating is determined, then you will receive a zero for all
assignments for the first offense. Because homeworks (programming) in this course are an essential part of your learning
experience, they are worth about 30% of your final grade. It would be very difficult to pass the course without this 30% of
the possible points. The College of Engineering policy on cheating is stated in detail here:
(http://www.engineering.uiowa.edu/current-students/academic-misconduct.php)
Whatever you do, please do not come to an instructor and say, "But won't my solution look like everyone else's – since
there are 400 students, the problem is narrow and the solution is simple." No, we won't analyze your first, "Hello, world,"
program the first day. But we will analyze pretty much everything after that. You are simply displaying your lack of
understanding of how varied and complex, even a simple programming solution can be. Don't do it. Also, if you think
changing all of your variable names, comments, whitespaces and re-ordering some lines of code will mask the similarity of
your code from someone else's, then you do not understand what is called "control flow" and "logic" of a program, nor how
the similarity detection techniques in our software work. The beauty of our system is that to truly beat it, you really have to
understand the program and change it fundamentally, at which point it would just be less effort to simply do the
assignment.
Here is a simple example: I have come up with a novel story called Stellar Hostilities. It is a story about coming of
age. Where a boy learns to use his laser rapier and develops his psychic powers to fight evil and the oppression of the
Confederation. Joined by a band of miss-fit insurgents, he destroys the mighty Confederation base in the final climatic
scene, as the evil, masked overlord is thrown into space by the explosion.
Although it is not called “Star Wars”, George Lucas wouldn't let you make that movie. The point is, programs have things
we can see, like variable names, comments and white spaces. But they also have "control flow" and "logic." When you
piece them together, it still looks like "Star Wars" no matter the quality of your thesaurus.
If there is so much danger in talking to someone about my program, how can the TA or instructor help me in case I
get stuck?
Excellent question! The main difference between the instructor or TA and your fellow students are that the instructors are
trained to help you understand the concepts used in your assignments, and not just tell you a solution. To do so, they may
provide you with examples that are similar in nature to your assignment. In certain situations, they may point you in the
right direction on a specific aspect of your program or may give you a heads up if they think you are going in the wrong
direction. They will also answer questions about any part of the actual problem specification that you don't understand.
TA’s and instructors will talk about the general concepts (conditionals, loops, variables), but they will not discuss how to
implement those in the context of the assignment.
Finally, don't forget that expensive textbook you bought, and all the examples found therein! You have a wealth of
information and a wealth of examples of other programs to use. But you have to open the book!
Summary
The bottom line is that the computer (and skill in programming that computer) is the most powerful, general, all-purpose
problem-solving tool ever created. You can either perform the work for this course and learn how to program and have at
your disposal a general, all-purpose problem-solving tool for the rest of your career…
… or not. Your choice.
-----------------------------------------------------------------------------------------------------------------------------Please fill out the lines below and sign and return to the instructor, thereby accepting the terms and consequences of this
policy. Turn this form in by the end of lecture Wednesday/Thursday, August 24/25 2011.
Printed name: _____________________________________
Student ID #: ______________________________________
Signature: _________________________________________
Section (circle one): 1 2
3
Download