UCSC Programming Course Request Form

Catalog title

Agile Web Development and Social Justice

Catalog description (40 words)

Development of web applications using agile methodologies. Fundamentals of web programming and/or web UI design. Background in free/open-source software movement, social computing, and current themes in digital justice. Topics include ruby language, design principles, storyboarding, source control, testing, and documentation.

1) In concrete, substantiative terms explain how the course will proceed. List the major topics to be covered, preferably by week. For a course in the arts, describe students’ activities.

attempt number one

weeks 1-2 — background and concepts

  • Introduction to the software libre movement: history, licenses, anthropology of hackers and the hacker ethic.
  • Elementals of small group software development: source control, command line basics, agile development methodologies.
  • A gentle introduction to ruby programming.
  • Selection of projects for the quarter.

weeks 3-4 — introduction to rails and short iterations

  • All: A general overview of the Rails framework. The idea behind Model-view-controller and routes. How web requests are made, processed, and returned.
  • Design team: narrative story board for the first iteration. Creation of HTML mockups for the UI. Readings on the fundamentals of design and UI creation. Refresher course on HTML/CSS.
  • Programming team: Details of the Rails framework and test-first development. Create the models, migrations, and unit tests based on the storyboards from the design team.

weeks 5-6 — iteration one

  • All: further reading on agile methodologies and user centered development.
  • Design team: Build views for initial functionality. Created storyboards for the iteration two.
  • Programming team: Implement controller logic for initial functionality. Rails details, such as filters, single-table-inheritance, has many through, functional tests.

weeks 7-8 — iteration two

  • Design team: Build views for iteration two. Meet with “clients” to review application progress and design storyboard for iteration three.
  • Programming team: Implement iteration one storyboard. Advanced rails topics, such as AJAX via RJS, polymorphic associations, caching, custom routes.

weeks 9-10 — iteration three

  • Design team: Refine and improve the UI and design.
  • Programming team: Implement iteration three.
attempt number two

In keeping with the principles of agile development, the course will consist of a series of very short development iterations focused on small incremental changes and functioning applications. Students will be divided into two teams: an interface team and a programming team. The interface team will begin each iteration by creating a user-centered storyboard and interface templates. The programming team will then write functional and unit tests before creating the application logic for the iteration.

Each iteration will include technical instruction as well as background on the history and theory of software development. The first iteration will begin with an extremely simple web application, while subsequent iterations will incorporate greater sophistication as the student’s ability increases.

Iteration 1:

  • Background: Overview of the Free/Libre Software movement and the digital commons, including history, licenses, anthropology of hackers and the hacker ethic.
  • Technical skills: Basic source control with SVN. Introduction to the ruby language. Introduction to the Model-View-Controller design pattern and the Rails framework. Creating UI mock-ups with Rails templates.

Iteration 2:

  • Background: Agile programming methodologies and people centered development.
  • Technical skills: Storyboarding and UI basics. Further instruction on ruby and Rails (testing framework, migrations, associations, and form verification).

Iteration 3:

  • Background: Topics in digital justice (the network society, innovation divide, ITC and social movements, Open Source in Latin America, digital privacy).
  • Technical skills: Anatomy of a HTTP request cycle. Advanced HTML/CSS. AJAX with Rails.

Iteration 4:

  • Focus on completing final application.

2) Include a complete reading list or its equivalent in other media.

free software movement, hacker ethic

principles of design


3) State the basis on which evaluation of individual students’ achievements in this course will be made by the instructor, e.g., class participation, examinations, papers, projects.

  • Attendance and Participation
  • Project Deliverables: Design mock-ups, programming exercises, storyboards, web-application prototypes
  • Final web application

4) Briefly justify any general education codes being assigned to the course (W courses must include Writing Intensive Course Approval Form and Q courses must include Supplemental Questions for Courses Satisfying Quantitative Education Requirement.)

T7 (natural sciences or social sciences)

A major theme of computer science is the evolution of development methodologies. This course seeks to give students hands on experience in a particular methodology designed for small teams in a fast paced world. The course will also cover core computer science skills such as programming, documentation, and testing. As such, the “natural sciences” designations clearly applies.

In social sciences, a major area of study is the emergence of a network society and how information and communication technologies are shaping the contemporary world. This course will examine such trends, specifically as it relates to social movements and digital equity. As such, the “social sciences” designation clearly applies.

5) List other UCSC courses covering similar material.

Sociology 30A-B-C.
Information Methods for Global Information Internships.
Introduction to information technology and communication networks using the Internet to reduce global inequality and bridge the “digital divide.” Prepares students enrolled in the Global Information Internship Program to construct web pages and write grant proposals for community and non-governmental organizations.

Computer Science 60N.
Beginning Programming: Natural Sciences.
An introduction to the basic techniques of computer programming. Detailed study of one programming language. Extensive practice using a computer to solve problems.

Computer Science 60G.
Beginning Programming: Social Sciences and Humanities.
An introduction to the basic techniques of computer programming. Detailed study of one programming language. Extensive practice using a computer, particularly personal computers, to solve problems.

Computer Engineering 80E.
Engineering Ethics.
Ethical theories, analysis, and their application to issues in the practice of engineering, such as safety and liability, professional responsibility to clients and employers, codes of ethics, legal obligations, environmental issues, and social issues. Emphasis on developing independent ethical analysis through the use of case studies.

Film and Digital Media 171D.
Social Information Spaces.
Investigates how information spaces can be designed to be inhabited, socially navigable spaces. Emphasizes the social navigation of information spaces, a set of techniques and ideas from computer-supported cooperative works, human-computer interaction, and architecture.

Computer Science 80J.
Technology Targeted at Social Issues.
Engineering is a great way to address social issues. This class will feature case studies and guest speakers on technologies people are already developing. The primary coursework will be a quarter long team project proposal where you propose something people should be doing. The best team project will get at least $5,000 to spend the summer pursuing it further.

6) List expected resource requirements including course support and specialized facilities or equipment for divisional review. (This information must also reported to the scheduling office each quarter the course is offered.)

  • Scheduled time in instructional labs (about 4.5 hrs/wk).