EAS 285 Teaching Computer Science Basics, a service learning course
Syllabus

Prerequisite: CIS110 or CIS120 or another college-level computer science course or permission of instructor
Instructors: Jean Griffin, SEAS Senior Lecturer, griffin@seas.upenn.edu and Quinn Burke, GSE EdD Candidate, burkew@dolphin.upenn.edu
Satisfies in SEAS: Technology in Business and Society, or Free Elective

   Spring 2011:
       Class meets 1.5 hours TBA. Penn students and instructors meet weekly at a mutually agreed upon time.
       Recitation: Penn students choose one:
             Wed 1-3:30 Computing workshops for Science Leadership Academy high school students at the Franklin Institute
             Tue/Thur 2-3:15 Computing class at University City High School

  Summer Session I, 2011:
       Weeks 1-4: Tue/Thur 10am-12pm. Penn students and instructors meet (without high school students).
       Weeks 5-6: Mon-Fri. Penn students and instructors host a computing camp for Philadelphia high school students called Boot Up!.

Overview
Students reinforce and expand their knowledge of computer science by teaching pre-college students in a course, camp, or workshop (outreach activities vary per semester) and by developing AP-level and/or pre-AP-level educational materials. In addition to providing a valuable community service, students learn about educational theories, software engineering principles, technology design, and computer science education practices while developing technical expertise and leadership experience. On an ongoing basis, EAS285 participants create educational software and modules which are shared with educators beyond the university's walls. These contributions and activities are in line with Penn's Compact and are funded by an NSF "BPC" (broadening participation in computing) grant.

Course Description
Students learn about theories of education, software engineering principles, and technology design through reading and discussion and by writing reflection papers (see the EAS285 reading list). An individualized plan is made for each studet to acquire or strengthen their technical skills in several areas(see the Technical Skills Acquisition section below). Students receive "teacher prep" coaching about classroom management and codes of coduct, and give peer-reviewed practice presentations. Students present or co-present lessons/activities designed by an experienced educator before potentially delivering lessons of their own design. Students learn about computer science education practices (see the EAS285 reading list) and analyze existing curricula in preparation for designing and developing new lessons. Students apply what they have learned from educational theory (e.g. scaffolding, feedback, authenticity, transfer, communities of learners), software engineering (e.g. modularity, reusability, scalability, testing, piloting, evaluation), computer science education practices (e.g. "unplugged" computer science, microworlds, media computation, peer-led team learning) and technology design (e.g. "knowing the client", usability) by designing/developing two assignments: an open-ended assignment (e.g. an "active learning" activity, a creative exploration, or a research exploration with only a few constraints) and a specification-driven assignemt (e.g. a program that should behave "according to spec").

Technical Skills Acquisition
The instructors work with each student to make an individualized plan for the student to develop technical proficiency in several areas (a number of possibilities are listed below) which depend on the activities offered that semester, the lessons being developed that semseter, and the background of the student. For example, one student may need to learn a programming language that will taught to the pre-college students. Another student may already know that language but could benefit from writing unit or integration tests (to test a potentially large number of students' programs) and/or by gain expertise with a version control system ( e.g.to track updates in the educational software developed in the course). A student who has just finised a CS1 course (e.g. CIS110 or CIS120) is likely to have a plan that is different from a mastsers student's plan. If all the course/workshop activities offered that semester are at a pre-AP level, a student's plan may include developing an AP-level lesson even if it is not delivered to students that semester.


Sample Semester, Week-by-Week

Although the summer session has a clear and convenient delineation between "prep time" and "camp time", the schedule for the spring offering does not because it accommodates the widely varying schedules of the K-12 partner schools. In some cases the course or workshop activity start at the K-12 school even before the Penn semester begins. Also, there may be gaps in the Penn semester when K-12 offerings are not offered during which time assignments are developed.
  Sample 12-Week Spring Semester:

            - Learn educational theories and practices, software engineering principles, technologies*.
            - Take test(s) on above
            - Write reflection papers on readings
            - Prepare for teaching and practice teaching 
            - Design/develop/pilot an open-ended and a spec-driven lesson

            - Assist with teaching activities
            - Write field notes and peer evaluations
            - Refine/deliver/evaluate the open-ended and spec-driven lessons    



  Sample 6-Week Summer Semester:
     Weeks  1-4 (Before Camp):
            - Learn educational theories and practices, software engineering principles, technologies*.
            - Take test(s) on above
            - Write reflection papers on readings
            - Prepare for teaching and practice teaching 
            - Design/develop/pilot an open-ended and a spec-driven lesson


     Weeks  5-6 (During Camp):
            - Assist with teaching activities
            - Write field notes and peer evaluations
            - Refine/deliver/evaluate the open-ended and spec-driven lessons

Grading

  1. 10% Papers Write reflection papers about the readings, field notes, peer reviews.
  2. 25% Mentoring/Teaching Prepare for activities and assist with them or lead them.
  3. 25% Test(s) Demonstrate knowledge of software engineering principles, knowlege of eduational theories and practices, competency with technical skills*.
  4. 40% Curriculum development Design and/or make a significant contribution to the development of the following (each of which should include learning outcomes, a student guide, a teacher's guide, and an evaluation component).
    1. An open-ended assignemnt, e.g. an "active learning" or "unplugged" activity, a creative exploration, a research exploration
    2. A spec-driven assignemnt, a project that involves problem-solving on the student's part (e.g. writing a program according to a specification)