Upload
darrell-manning
View
212
Download
0
Embed Size (px)
Citation preview
Computer Science Made Easy?
J. Philip East
Computer Science Department
University of Northern Iowa
Some students want to explore computer science but not commit to the intense introductory major course. Some students lack intellectual skills to succeed (in 1st attempt) in regularly-paced programming course. Let's discuss ideas for accomplishing both these goals in a single course.
Course Goals
• Computer Science Made Easy
• Student difficulty in CS-I
• Recruitment/diversity
• Explore/examine skills needed for programming
• (Am hoping to get feedback and suggestions from you)
Exploring C.S. & Programming
• One credit college course (6-9 week high school course?)
• Course rationale/purpose– Provide exploration of computer science– Provide computer use skills– Be low stress– Develop pre-programming skills– Available to explorers and CS-I dropouts
The Exploration Part
• Introductory discussion– Define CS (solving problems via software development)– Discuss kinds of jobs to be had– Characterize programming (your favorite
characterization?)
• Independent student exploration– Students explore jobs, topics in CS– Sharing/discussing explorations
Low Stress
• Pass/Fail rather than graded
• Grading scheme:– Scores: missing=0, fair=1, ok=2, good=3, excellent=4– Must average "ok" to pass
• Showing up and participating will be important
• No exams (except possibly a pre-programming skills test that will
be used to assess instruction, not students)
Two Planning Approaches
• Thinking in terms of programming tasks
• Thinking about the independent skills
• Obviously, some overlap
• Goal of understanding learning & teaching implies focus on independent skills
Programming-like Tasks
• Directions (following & giving)
• Abstraction (names/definitions; using syntax charts and FSAs--interpreting, defining, debugging; indirection)
• Sequencing instructions (including various control structures)
• Troubleshooting/debugging/diagnosing
• Problem representation
• Problem subtasking
Independent/Basic Skills
• Following directions (various contexts)
• Being planful (includes most tasks on previous slide)
– Problem representation (identify outcome(s), known data/resources, required/necessary tasks/interactions)
– Problem subtasking (problem subdivision with representation)
– Solution testing/debugging (requires observation, comparison with expectation, identifying problem, fixing)
• Solution implementation--concretizing
• Patterning is an underlying mechanism
Following Directions
• Subskills– Careful listening/reading– Interpreting– Seeking clarification
• Practice with feedback/self-assessment
• Lots of contexts
Being Planful:Problem Representation
• Varied contexts
• Individual and group exercises may be used• Student success is measured by their personal
formulation of the problem/scenario (outcome(s), known data/resources, required/necessary tasks/interactions)
• Self-assessment and discussion of formulations
Being Planful:Subtasking/Actual Planning
• Build from prior tasks/contexts/problems
• Formalized/explicit planning versus real-time implementation under observation
• Require some formalization of plans (collection of
subproblem representations) • Sequencing introduced here (problem selection important)
• Discussion and self-assessment RE plans
Implementation/Concretizing
• Next step (but not part of "planful" skills)
• Will follow from (some) planned problem solutions
• Two possible approaches– Repeatedly implement and test a solution– Implement several solutions and, later, test them all
Being Planful:Testing/Debugging
• Will build on student or instructor supplied solutions
• Involves: stating expectations, observing results, comparing the two, identifying problems, fixing the problems, and comparing with expectations, …
• Comments RE process?
(Oh, Yeah) Indirection
• I like this too much to leave it out
• Probably should be included anyway
• Arrays, indexes, pointers, abstracted comments (from real life and from other notations)
Testing these Skills
• Requires– New contexts– Multiple items per skill– Careful selection of tasks to isolate skills– Relatively easy checking?
• ?
Plans for the Course
• Schedule (≈1 week each)
– Intro & CS exploration
– Following directions
– Problem representation
– Subtasking
– Implementing & testing
– Indirection/programming
– Review/test/?
• Assignments– Task homeworks
– Exploration report
• Suggestions?
Bibliography
• Course descriptions
• Theory
• Predicting programming skill
• www.cns.uni.edu/~east/scholarship/necc/cs_made_easy