Here is my “put up or shut up” CS Ed minor/certification outline. I have at least minutes of thought into this and about 30 years of CS teaching experience. The Teaching Methods course does have a rough outline attached (the cut and paste came out a bit funky) because I tried to get my local University Education department to offer the methods course. They said there was no demand for CS teachers so no demand for the methods course. The intent of this course of study is not to make good programmers. It is intended to make a teacher able to understand what teaching programming/CS involves. I do not think a teacher with only this background could walk into an APCS course and do an incredible job. I do think they would know what the job involves and how much effort it will take to do an incredible job.
Something like this really needs to be built by a group experienced classroom teachers that have seen the issues. It is not something that should be built by university professors that have not been in the K – 12 trenches for years.
- CSED 101 – Computer Programming for Grades K – 7
- A survey of languages, curriculums and strategies for lower grades.
- An examination of the CSTA Standards.
- Required tools (hardware and software) for implementing a CS program in K – 6.
- CSED102 – Computer Programming for Grades 7 – 11
- A survey of languages, curriculums and strategies for middle grades.
- An examination of the CSTA Standards.
- Required tools (hardware and software) for implementing a CS program in 8-11.
- CSED103 – Computer Programming for Grades 11 – 12
- A survey of languages, curriculums and strategies for upper grades.
- APCS review. Languages and curriculum.
- CSTA Standards.
- CSED104 – Technical Aspects of Teaching CS
- Teach the prospective teachers how to manage and troubleshoot hardware.
- How to build a lab from a bare classroom to include internet wiring, switches and power.
- Lab management software (LanSchool, Smart Sync).
- Purchasing computers for a lab/school.
- A zillion other techie things a small school CS teacher needs to know.
- CSED105 – Computer Programming I
- A programming course in a modern upper level language (C#, Java, Python, etc).
- CSED106 – Computer Programming with a Project
- A programming course incorporating a device. Device possibilities like Droid, iPod, Lego Mindstorms, Arduino, Kinect.
- CSED107 – Teaching Methods.
- Course goal – introduce prospective Programming teachers to the fundamentals of teaching Programming
- Pre-requisites – 1 semester programming (College or high school)
- Why teach programming?
- Course objectives/learning outcomes (Programming Course Objectives.docx)
- Programming language philosophies – learn one language well or survey of several languages?
- Why kids struggle with programming
i. Algebra vs. programming syntax – x=x+1 makes no sense in algebra
- Step-by-step (computer) vs. leaps of logic (human)
- Bloom’s Taxonomy contradiction – simple is better
- Fundamental programming concepts
i. Sequence (Process) – Order of execution
ii. Decision (Selection) – If-then-else
iii. Repetition (Iteration, Looping) – Repeat-until/While-do
- Types of errors
- Top down/bottom up design
- Naming conventions
- Commenting and documentation (The Art of Code Documentation.docx, Using PDL for Code Design and Documentation.docx)
- How to write good code (Bad code.docx)
- Capturing kids’ interest
ii. Game programming
iii. Turtle graphics
iv. iPod/Droid apps
- Language types
i. Line code – Small Basic, VB, RobotC, C#, Java, Corona
ii. Drag and drop line code – Alice, Scratch
iii. Icon – VPL, Kodu, NXT-G (Lego)
iv. Command line
- Programming languages for teaching review
i. Python, Java, Alice, Visual Basic .net, Lego Robotics – NXT, RobotC, GameMaker, Scratch, Small Basic, Kodu, VPL, Arduino, Corona
- Installing programming software
- Grading rubrics (Program Grading Rubrics.docx)
- Programming Assignment goals
- Free resources and blogs to watch
- Textbooks vs. on-line tutorials
- Hardware needs
i. Quality of computers
ii. vs. Windows