tutorials

HTML5 Jumpstart
Michael Olan
Abstract: HTML5, the first new version of the standard since 1999, is expected to become a W3C Recommendation in 2014. Still a work in progress, HTML5 is already enjoying widespread adoption.
This tutorial will feature an overview of the related technologies that collectively make up HTML5: Markup to provide structure, Cascading Style Sheets (CSS) to enhance presentation, and JavaScript to supply behavior. No previous experience is necessary, although basic familiarity with HTML and programming will be assumed. A summary of the topics to be covered follows:
New and redefined markup: In previous versions of HTML, generic div tags and class attributes are the primary means of specifying document structure. Many of the new elements added in HTML5 improve support for content structure, such as section, article, aside, header, footer, figure and nav.  Some of the new elements provide additional semantics and some existing elements, like address, have been redefined to provide semantic information. Many of these structural and semantic features were designed with accessibility in mind.
Forms have been significantly updated to better align with the way forms are actually used. New input element attributes are available for email, numbers, dates, times, and more. Autocompletion, customization of input elements, and input validation make forms more user friendly and robust.
Layout and presentation: HTML5 strongly encourages separating the meaning of elements from their presentation. Nearly all presentation details have been relegated to Cascading Style Sheets. CSS3 provides powerful new features for specifying colors, fonts, backgrounds and borders. It also adds element animation and transitions as well as multi-column and flexible-box layouts. 
Behavior: Programming is now a fundamental activity for producing web documents. The default language, JavaScript, has become a first-class citizen of the Web. APIs are an integral part of HTML5 and are documented in the HTML5 specification. JavaScript APIs are essential for using some of the new HTML5 elements such as canvas. Other significant API features include support for local storage, offline web applications, and geolocation. The re-emergence of JavaScript has also led to a proliferation of associated libraries.
Participant Requirements: None

Copyright vs. “Copywrong”: Teaching Copyright Ethically
Karla Carter
Abstract: We live in a world of digital content. Everyone has access to a myriad of online resources: images, sounds, music, videos, and text. Whether we are operating as content creators or content consumers, copyright considerations touch us all daily. Copyright is not merely the sum of its legal parts, but also has ethical implications, particularly when combined with technology. Teaching copyright, therefore, should focus not only on the legal and economic aspects, but also the ethical aspects, including moral rights of attribution, integrity, and privacy. Workshop participants will leave with a practical strategy for teaching copyright in all its aspects.
Participant Requirements: None

Introduction to Scala and its use in CS Education
Mark Lewis
Abstract: Scala is one of a new generation of hybrid languages that merge the functional and object-oriented paradigms. Thanks to its concise and expressive syntax, paired with JVM support and Java integration capabilities, Scala has been adopted by many companies and currently leads the pack of second-tier languages in the RedMonk ranking. This tutorial will take participants through the basics of the Scala language by running through a sample CS1 curriculum and an introduction to object-oriented programming in Scala. We will then sample more advanced concepts to show how Scala can enable/simplify their presentation.
Participant Requirements: Participants should bring laptops with the following software downloaded: Scala from http://www.scala-lang.org/. (Using Scala requires Java, which they can get from http://java.oracle.com/ if they don't have it.) Eclipse from http://www.eclipse.org/. There are multiple options. They should get the Classic version as that is recommended for the last piece. Scala plug-in for Eclipse from http://scala-ide.org/.

Functional Game Programming in Java-based CS1
Stephen Bloch, Lee Stemkoski
Abstract: Many CS1 curricula these days use graphics and video games as motivation (e.g. those associated with Scratch/BYOB/Snap, Processing, Alice, and Media Computation in either Java or Python).  A challenge faced by any such curriculum is how to simultaneously teach good principles of problem-solving and software development such as test-driven design, model/view separation, and writing functions that are short, coherent, and reusable.  Interactive graphics, in particular, has been notoriously difficult to test, so most graphics-based curricula simply don't talk about automated testing.
Functional programming addresses many of these problems.  Treating graphics as data objects, rather than as snapshots of what's on the screen at a particular moment, makes them as testable as integers or strings.  Test cases for a functional program are much better-behaved and easier to write than test cases for an imperative program, so even beginning students can and do use them as a valuable tool in the problem analysis phase, before writing code.  Our functional API enforces model/view separation (at the beginning) and treats event handlers as ordinary functions, as easily testable as a payroll computation.  And functional programmers have traditionally developed the habit of writing short, coherent, reusable functions -- a habit that serves them well even when writing imperatively.
One of the authors has taught this material for years using a dialect of the Scheme language.  However, many schools are unable or unwilling to use a language that doesn't look like C, so in 2012-2013 we ported our support library to Java and experimented with teaching the same material in a Java-based CS1 course, with good results.
This hands-on workshop will show participants what we've done and how they can try it themselves.  You'll write several increasingly sophisticated animations using our functional support library, and we'll all discuss differences between this and the development process of a more imperative GUI program.  The library, our schedule of topics, and lecture notes will be made available.
Participant Requirements: Participants should bring a laptop with pre-downloaded software from http://adelphi.edu/sbloch/bluej-stuff/

Python as a First Programming Language
Charles Dierbach
Abstract: The Python programming language has been quickly gaining popularity over the past few years as a language of choice for CS1 courses. Some estimates put the rise in use at forty-percent a year [Guzdial 2011]. As far back as 2006 there have been reports of significant improvement in both student and instructor satisfaction by redesigning introductory courses to use the simplicity of Python rather than the complexity of a language like Java [Reges 2006].
There have been ongoing discussions of the appropriateness of the Java programming language for use by novice programmers for some time now. The development of special educational development environments, such as Dr. Java and BlueJ, is evidence that Java “as is” can be problematic for beginning programmers. An ACMsupported project to “tame” the language through the development of a subset of Java for educational use [Roberts 2008] gave further evidence of the problem. 
The change to Python for CS1 is more profound than just a change to the “language du jour.” As Eric Roberts has pointed out, both the complexity and abstractions of programming languages used in introductory programming has risen steeply over the past decades – from BASIC to Pascal to now C++/Java. This has been driven by the fact that students do not want to learn a “dead language,” but languages that are in demand in industry. It has also been driven by the current language adopted for the CS AP exams. And once time has been invested in the language used in CS1, there is a resistance to changing to another language in CS2, or even later courses. A change to Python is a reversal of this decades-long trend.
Participant Requirements: None