170 likes | 181 Views
This course aims to provide a low-stress introduction to computer science and programming for students who want to explore the field without committing to a major course. It will cover basic programming skills and offer independent student exploration of different topics in computer science. The course will be pass/fail and focused on problem-solving through programming tasks and developing independent problem-solving skills. No exams will be given except for a pre-programming skills test for instructional assessment. The course will follow a schedule with different modules covering introductory discussion, following directions, problem representation, problem subtasking, implementation and testing, and indirection/programming. Homework assignments, exploration reports, and suggested readings will be provided.
E N D
Computer Science Made Easy? J. Philip East Computer Science Department University of Northern Iowa east@cs.uni.edu 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? • ?
Schedule (≈1 week each) Intro & CS exploration Following directions Problem representation Subtasking Implementing & testing Indirection/programming Review/test/? Assignments Task homeworks Exploration report Suggestions? Plans for the Course
Bibliography • Course descriptions • Theory • Predicting programming skill • www.cns.uni.edu/~east/scholarship/necc/cs_made_easy