With the hopes of encouraging others to design and build their own microworlds (MWs), we publicly share the technical tools we developed for our own, and document them here. This documentation will be updated from time to time as Snap! and/or our MW ideas evolve.
I get it. You’re a teenager, it’s the first day of what was billed as a serious computer science course, and you’re confronted with drag-and-drop blocks in primary colors. You’ve seen this before, back when your age had only one digit, and you played around with Scratch. Been there, done that. But Snap! (Build Your Own Blocks) isn’t Scratch. It’s a very serious programming language, in disguise. The reason for the disguise is that most programming courses spend most of their time and effort on the details of the notation used by whatever programming language they choose. (...)
Snap! was developed by Jens Mönig and Brian Harvey under the umbrella of the University of California at Berkeley, with the objective of bringing the power of the Scheme programming language and its computer science concepts into a Scratch-like environment. In fact, for a bunch of years, Snap! was developed as a modified version of Scratch. The ability to construct your own blocks out of other blocks was one of the foundational principles of this modification of Scratch, which is why, initially, they named it BYOB (standing for Build Your Own Blocks). In Snap!, blocks built by the user bear the same weight as any other preexisting ones. In other words, Snap! lets us build custom expressions that look and behave like primitive ones. Nowadays, Snap! is a separate project with a codebase that is completely independent from Scratch and with an outstanding number of new features and particularities that make it suitable for a serious study of computer science as well as for research projects. However, Snap! still keeps intact everything that Scratch is about, and, in a programming language jargon style, we could very well call it a dialect of the latter.
The University of California, Berkeley and the University of North Carolina, Charlotte propose a collaborative effort, called FRABJOUS, to develop and deploy a proposed, new Advanced Placement (AP) computing course that can successfully achieve outreach -- attracting women and underrepresented minorities -- while having a technically rigorous programming component. The work extends the PIs' previous work on the Berkeley "Beauty and Joy of Computing" course and the College Board's CS Principles course to the high school level, addressing the development and study of new instructional materials as well as the impact of teacher professional development on student learning outcomes. The course uses a visually rich programming environment, called Snap, that is based on Scratch. Scratch has had well-documented success in teaching computer programming to 8-14 year olds because of the power of its visual metaphor. Snap extends the metaphor to teach more advanced methods, including recursion, higher order procedures, and object-oriented programming, to 14-19 year olds. (...)
This project involves a partnership between the Education Development Center, the University of California-Berkeley, the New York City Foundation for Computer Science, and the New York City Department of Education. The project team will develop curricular materials, based on the Beauty and Joy of Computing course developed at University of California-Berkeley, for teaching Computer Science Principles at the high school level using the Snap! programming language. They will run in-person teacher-training programs each summer, and develop an online teacher development course. During the project, 100 high school teachers in New York City will be trained to teach this course, and early participants will also become teacher-trainers who will work with later participants. The teachers involved will become part of a Community of Practice that will continue to provide support for the teacher cohorts. This project is a design and development study. The central research hypothesis is that the explanatory power of a visual programming language can make advanced techniques such as recursion and higher order functions accessible to high school students, including traditionally underrepresented groups. The project team also hopes to show that students completing this Computer Science (CS) Principles course will be motivated and well prepared to succeed in later courses, such as the Advanced Placement (AP) CS A course. They will use the knowledge gained from this experience in New York City (NYC) to improve the course through iterative development and refinement and to increase understanding of the implementation of these ideas in high school contexts more broadly. Formative data will be collected throughout the project and analyzed, and used to inform subsequent revisions to the curriculum materials. They will use qualitative, quantitative, and mixed methods analysis approaches. Over the four years of the project, the project team will work with the 100 teachers who will participate in the project, attend professional development activities, and teach the CS Principles course to a total of approximately 2,000 students in NYC. Evaluation instruments will include background surveys, feedback surveys, course assessments, the AP CS Principles exam (currently under development by the College Board), classroom observations, student interest and engagement assessments, student papers, and teacher interviews. All 100 NYC teachers involved will be part of the research study.
In this article, we share our philosophy, an update on our course design principles, a general flow through our curriculum, the impact BJC has had, and conclude with lessons learned.
Computer Science Principles (CSP) will become an Advanced Placement course during the 2016-17 school year, and there is an immediate need to train new teachers to be leaders in computing classrooms. From 2012-2015, the Beauty and Joy of Computing team offered professional development (PD) to 133 teachers, resulting in 89 BJC CSP courses taught in high schools. Our data show that the PD improved teachers’ confidence in our four core content categories and met its primary goal of training teachers in equitable, inquiry-based instruction. In this paper, we present the evolution of the BJC PD, its challenges and lessons that we learned while continually adapting to teachers’ needs and contexts.
Our grand challenge is to scale high-quality computer science curriculum and instruction to reach all high school students. CS10K – an NSF and ACM-sponsored project – is working to do just that by supporting curriculum development, computer education research and professional development through the Computing Education for the 21st Century (CE21) program at NSF. Professional Development (PD) is a key piece of the project, as we need to train 10,000 teachers to teach rigorous computing courses in 10,000 high schools by 2016 – the school year that a new Advanced Placement Course will be rolled out. This panel will provide an overview of the PD landscape and then each panelist will discuss the unique aspects of their PD project for high school teachers.
The Beauty and Joy of Computing is a computer science course for undergraduate non-majors that combines a deep programming experience with lectures, readings, and discussions about nonprogramming topics such as the social context of computing and the future and limitations of computing. The course is designed to appeal to a wide range of students, including women and underrepresented minorities. The programming half of the course uses BYOB, an extension to Scratch adding first class procedures, lists, and objects. The course has been chosen as one of the pilots for a coming (2016) high school Advanced Placement exam. Our current work includes further curriculum development, an NSF-funded teacher preparation program, and the implementation of Snapa!, a new browser-based version of BYOB.
The course is intended for non-CS majors. For students in the College of Letters and Sciences, it fulfills the “Quantitative Reasoning” breadth requirement. It is not required for CS majors, but some intended CS majors with no prior programming experience decide to take it as preparation for our first course for CS majors. In addition, many non-CS majors enjoy CS10 enough to continue with the sequence for majors.
The University of California Berkeley proposes to build on the work of their pilot of the proposed College Board AP CS Principles course, working with and training an initial group of high school teachers during the summer of 2011. The PIs piloted their course -- called the Beauty and Joy of Computing (BJC)-- at the college level in 2010-2011; with this work, they will adapt it for high school students and provide professional development for their teachers. BJC invokes passion, beauty, and awe by engaging students in a rigorous computing curriculum that promotes creativity and collaboration using Snap's visually rich programming environment, while also provoking thought around current events and how computing relates to people's lives. This summer effort will conduct and evaluate team-based professional development for in-service teachers and it will enhance the development of the Snap software (an extension of Scratch formerly known as "Build your own Blocks (BYOB)"), which combines technical sophistication with an attractive drag-and-drop interface. Specifically the project will (1) develop a core group of mentor teachers in the Berkeley area who will in later years help to scale the professional development around BJC to new locations, (2) conduct and evaluate intensive summer professional development for teachers, and (3) reimplement the Snap programming language and development environment to improve its speed and to create a version that does not require local software installation. This project is designed to continue the momentum developed around the pilot BJC course and establish a firm base for a larger project that has been separately proposed to NSF.
Scratch is a computer programming language for children, with a graphical drag-and-drop user interface. It is a descendent of Logo, developed at the MIT Media Lab. A small but growing trend among universities is to develop computer science courses for non-majors using Scratch as the programming environment, because it isn’‘t threatening - the same reason it works for kids. Also, the visible use of multiple threads in Scratch provide a simple introduction to parallelism. One such course was piloted this year at the University of California, Berkeley: “The Beauty and Joy of Computing.” But Scratch has weaknesses as a programming language. Most notably, it lacks procedures, so it can’t convey the impressive phenomenon of recursion, one of the central ideas of computer science (and also one of the central ideas of early Logo pedagogy). Its support for data structures is also weak. These weaknesses aren’t oversights; the designers of Scratch deliberately avoided cluttering the language with anything a child might find threatening. To serve these two audiences, it has been proposed to split the Scratch community with two versions of the language, one for kids and one for advanced users. We believe that this is not necessary. By taking key ideas, such as procedures as first class data, from the Scheme language, we can add only a few features to Scratch and still make it powerful enough to support a serious introductory computer science curriculum. Furthermore, the graphical interface of Scratch makes the reification of procedures as data seem much less abstract and intimidating to novices.