Tag Archive for compsci

Reflections on Computer Science

We at U Prep are partway through the redesign of the school’s computer science program, to reimagine it as the study of foundational principles of computational thinking, accessible to all students regardless of prior background, and inclusive of highly engaging specialities such as robotics and website development.

The full plan includes three computer science elective classes, the integration of computer science activities into required middle school classes, and advising student clubs in robotics and other technical pursuits. This way, we will give all students the opportunity to do computer science and also provide those interested in further study an array of engaging opportunities at more and less technical levels.

While we put the full plan into place, we decided to offer a computer science course to students this year, even though our new model was not yet fully developed. Student interest was very high, and teaching a class would give us first-hand experience with developing curricula around these new principles. We staffed the course by hiring a subject-matter expert to partner with me as the experienced teacher. At the same time, we began the search for a full-time computer science teacher for next year.

We designed the course to teach fundamental concepts in algorithmic processing and data structure design through programming activities, so that students would receive explicit instruction in foundational principles of computer science while also learning programming skills. Programming was the most common learning activity, and key concepts included use of functions to repeatedly perform tasks, thinking logically and sequentially, breaking a problem into smaller parts, and figuring out how to organize real world data into structured elements. We made explicit links between the problems students were solving and the underlying concepts and thinking skills that are used throughout computer science.

We wanted students to learn to program in an environment that they would be able to use subsequently in future courses and their personal pursuits, to mirror how computing is now used in all fields of study and professions. We chose JavaScript as the development language for several reasons. The web-based applications that students commonly use (e.g., Facebook, Google Drive), are written in JavaScript. Study of JavaScript helped demystify software development, as students recognized the input elements and output formats that they created. While not an entirely strict language, JavaScript has consistent enough structure and data typing that we could teach these principles perfectly well. The development environment (Komodo) is free and multi-platform, ensuring that students could develop using their own computers and continue to use what they learned after the course was complete. The output environment (Chrome web browser) is familiar, yet students gained a new level of understanding of web page structure and performance as they created website software and debugged it using Chrome’s developer tools.

Most class time was spent writing code to solve specific problems, small ones at first and larger ones later. Students analyzed grade level enrollments, Sounders FC player salaries, and animated bouncing balls and streaming bubbles. Each activity built up students’ understanding of programming constructs, input and output, functions, parameters, and return values, conditionals and loops, arrays and objects, speed and memory usage, and more.

Students completed both a substantial individual project and a self-designed group project. In each, we explored how to analyze a real-world problem and design a solution, how to create, test, and refine software, and how to bring a project to completion. The group project introduced new dynamics: how to share, divide, and reconcile project design and development tasks among team members, and how to use an online, collaborative development environment to work on a project within a team.

Students also completed an individual research activity, in which they found and interview a computer science professional and made a short presentation to their classmates. This helped broaden students’ concept of what it means to do computer science work. Not all interview subjects were software developers, and a number applied computer science to other fields. Students learned that computer science is useful in all pursuits.

Bubbles activity
Practice with arrays, objects, Canvas, loops, and functions


David Malan on Teaching Computer Science

Three of us from U Prep attended a talk by David Malan, noted Harvard computer science instructor, at the UW school of Computer Science and Engineering. Malan walked the audience through noteworthy insights gained from teaching one of Harvard’s most popular courses, CS 50. The course has received national attention for making computer science accessible to both computer science majors and non-majors.

The national story on Malan has emphasized his personal magnetism and engaging presentation style, but Malan took his talk in a completely different direction. He presented a systems analysis of the course, students, and content, emphasizing the structural conditions that the teaching team has designed to support student success. Malan hardly mentioned his distinctive lecture style at all, instead noting that the team has reduced weekly lecture time in the course. Anyhow, only 70% of the students watch the lectures, increasingly on video as the term progresses. The core of the class, Malan states, is student work on authentic problems.

The keys to CS 50′s success, according to Malan, are the huge team of teaching fellows and alumni who provide small group and individual instruction, the focus on “memorable moments” during lectures, and the two capstone events that ground project development within a highly social, memorable context. The course provide 100 Teaching Fellows for a student enrollment of 700, and course alumni volunteer further support. Most students spent 10-20 hours per week working on the course, and a small number fall outside of that range, above or below.

Malan believes in mental reference models for concepts in computer science. At the start of the course, students build programs using Scratch (I thought that was for fourth graders!), providing a visual reference point for later programming in code. Lectures include kinesthetic demonstrations, during which students stand on stage and represent such concepts as bits in a byte or iterations of a binary search.

Later in the course, assigned problems become more challenging and complex, allowing students to engage with them at their level of mastery. Cryptography, digital forensics, spellcheck, breakout, a stock trading game, and a virtual drive through campus stretch students’ skills and knowledge. All this in a single semester course? No wonder students do so much work each week.

Malan underscored what we have also found the most interesting challenge in teaching computer science: how to engage and effectively teach students with novice, moderate, and significant experience in the field. Computer science is based on abstract principles of logical and sequential reasoning. These can pose a significant challenge to new students in the field, and yet tracking alone only serves to reinforce perceptions that only a small number of people can master computer science. We are working hard to develop the teaching techniques to make computer science accessible, relevant, and understandable to all, since computer science is now important and useful in all fields of study.

Seeking Computer Science Teacher for 2014-15

Our new, innovative computer science program emphasizes high student engagement, accessibility to all students, and opportunities for advanced study. University Prep is a grades 6-12 independent school in Seattle, WA. I am happy to answer your questions about the position.

Computer Science Teacher
Full-time, academic year position
Starts August 2014

Qualifications:
University Prep seeks an innovative computer science teacher to deliver a program of study in grades 6-12, including three levels of computer science classes, supporting instruction for computational thinking across the curriculum, and advising student clubs. This is a new position, part of a school initiative to increase emphasis on computer science in the program and meet rapidly growing student interest in the subject.

Candidates must possess demonstrated competence and experience in the content area and pedagogy. A master’s degree or equivalent experience in computer science and recent successful teaching experience are desired. An understanding of new perspectives on teaching computer science will be helpful. Successful candidates will have the flexibility, energy, enthusiasm, high expectations, and understanding of the developmental needs of 6th – 12th grade students.

University Prep is committed to the diversity of its workplace and to making computer science accessible to all students.

Reports to:
Director of the Upper School

Duties:
Teach one Middle School and two Upper School elective courses in computer science, with the goals of high engagement, broad accessibility, and opportunities for advanced study.

Collaborate with Middle School teachers in other disciplines (currently math and science) to integrate computer science and computational thinking activities into these required courses.

Support student-led clubs in applied computing fields. These vary from year to year based on student initiative and may include robotics, engineering, 3D printing, programming, and app design.

Articulate and refine the vision for broadly inclusive, authentic instruction in computer science at U Prep. In collaboration with the academic dean, division directors, and academic technology director, develop future strategic directions for the computer science program, including consideration of a U Prep graduation requirement in computer science.

Describe the computer science program to current and prospective students, families, and peers at other educational institutions. Actively network with local and national organizations, such as the UW Computer Science Department and Puget Sound CSTA, to enrich and share U Prep’s work in computer science

Other duties as assigned

If you are interested in applying for this position, please send your résumé to Debbie Playter at [email protected]

No phone calls or drop-ins, please!

http://www.universityprep.org

Rebirth of Computer Science at U Prep

Reprinted from University Prep Happenings, Summer 2013

Dovetailing with the new iPad and laptop program, computer science is making a comeback in U Prep’s curriculum. Computer Science at U Prep was taught as far back as 1985, but in recent years has faltered due to low enrollment and the difficulty of retaining part-time instructors. For the last two years, no courses have been offered in either division, but U Prep administrators have been working to fix this deficit. Academic Dean Richard Kassissieh began by convening a study group last fall to consider how best to teach computer science with the idea of building a program that is attractive to students and  can sustain itself.

The committee, comprised of faculty, students, parents and division directors, met four times, and used Design Thinking to identify user characteristics and the most important qualities of a future program. This process, based on a Stanford Design School model, is centered on human needs and lends itself to creative solutions. It begins by creating an “empathy map” that focuses on the feelings and the needs of the target audience.  The committee interviewed sixty current students, alumni, parents and professional colleagues. Among the interesting findings: there is a perception among students that computer science is boring, and many girls at U Prep do not see themselves as either computer scientists or programmers. The study group concluded that, to overcome these hurdles, it is necessary to reach students early and to give them a taste of computational thinking and programming in Middle School.

Starting next fall, all Middle School students will be exposed to computer science. Computational thinking and programming will be integrated into existing courses, starting with math and science, to build both understanding of and interest in the discipline early. Some teachers are attending workshops this summer and developing study units for next year, and parents in the computer science field will partner with some of our teachers to assist them.  Students will have the opportunity to see how it is used in most disciplines today, and most important, that it is accessible to everyone. “Ultimately, the intent is not only to prepare students for their future, but also to empower them to create rather than just use software,” says Dean Kassissieh.

Next will come the building of a sequence of computer science courses with opportunities for advanced study in Upper School.  Initially, Introduction to Computer Science course is being offered to eighth through twelfth graders. The program will be further developed with the addition of more courses and the strengthening of co-curricular offerings, such as clubs that focus on programming, software development, pre-engineering, and robotics. Based on the large numbers of sign-ups this spring for the fall 2013 class, there seems to be ample student interest.  The hope is to hire a full-time computer science teacher by the fall of 2014.

U Prep has been very fortunate to draw on the amazing resources of its school community in this effort. Multiple U Prep parents have assisted with the effort, serving on the computer science study group, connecting with the UW K-12 computer science outreach group, and even co-teaching the Introduction to Computer Science course this year. We are fortunate to have among our parents software engineers and team leaders from Microsoft and computer science professors from UW.