# CMPS119, Spring 2012, Section 01: Syllabus

## Logistics

Instructor: James Davis - UCSC Professor - Computer Science Department

Email: davis@cs.ucsc.edu

Co-Instructor: Phil Strong - Founder HR4E - Medical Doctor with PAMF

TA: Alex Gainer

Email: againer@soe.ucsc.edu OR againer@ucsc.edu (please put CMPS 119 in your subject line somewhere).

Lecture: 12:00-1:45pm TuTh - PhysSci 114

Labs/Discussion: None

## Overview

1) How is software development useful for addressing social issues? What are examples of impact people have had? In class you get to hear a bunch of interesting example and discuss them.

2) Course project addressing actual real world needs of a non-profit partner. If your project is great, it will be used.

During Spring 2012 our non-profit partner is Health Records for Everyone (HR4E). They are interested in digital health records that end up as standards based documents, and have ongoing relationships with both a rural health clinic in Ethiopia as well as US based health organizations.

## What do I get?

GE: PE-T or T7

Satisfies a Computer Science BA/BS upper division elective course

If you are some other major that normally can use CS courses as electives, ask me

## Pre-reqs

This course formally requires CMPS101 as a pre-req. This was set to insure that people had some level of computer skills, since the whole point is to get you thinking about how computer science might be used to benefit society. However this is a soft requirement and I'm prepared to provide permission codes for anyone that thinks the class might benefit them. http://dl.dropbox.com/u/2292727/CMPS119_PermissionCodes.pdf

• Computer Science Majors - This class is targetted at you.
• The good: You will get to code. It will be actually useful in the real world. It will be awesome.
• The bad: You will also have to read ...
• The ugly: ... and discuss ideas with no right answer
• All other majors - We would love to have you join us.
• The good: You will get to read and discuss interesting ideas.
• The bad: You will need to discuss social issues in terms of objective metrics that are de-humanizing.
• The ugly: You might have to code. (But someone on your team will help)

## Class time

Lectures: Class time will be spent 40% on lectures and presentations of case studies relevant to the topic of the week. These case studies are meant to provide a broad overview of both social issues and areas of computer science and how they might be applied. Topics and case studies will rotate according to current events and student interest. However a 10 wk breakdown might be as follows:

Week 1 Introduction to Class and Overview
Week 2 Most important social problems – What should we solve?
Week 3 Objective Metrics, Ranking Problems, Visualization
Week 4 Education
Week 5 Computers for All? Is it really useful to give computers to everyone?
Week 6 Poverty, Money, Finance, Employment
Week 7 Governance, Free speech, Human rights, Content freedom
Week 8 Health
Week 9 Energy, Environment
Week 10 Cultural Heritage Preservation

Class time discussion: About 30% of class time will be spent on discussions relevant to the areas being introduced. I generally run these discussions by taking a controversial issue, and asking students to propose solutions, leaving open both the politics of the social issue itself and the range of technical solutions. Its fun.. expect to argue convincingly.

Class time projects with non-profit partner: About 30% of class time will be spent with the non-profit partner. The class time itself will be presentations from the non-profit, as well as project working group meetings, and feedback from the non-profit on the solutions so far.

25% Quizzes related to readings
25% Individual short papers on class topics / readings
50% Contribution to team project

+10% Participation in online discussion (possibly extra credit)

## Project

A group project addressing a real need of the non-profit partner. Our goal as a class is to give them something they need. The non-profit has an obligation to specify a well defined project that we can actually accomplish. We have a goal to figure out how to actually give them that. It needs to actually work. As in they can take it to the field and actually use it. Without it crashing.

The actual project work will be intense but only be about 4 weeks of the quarter. Note that there is built in time to fix up your project if needed, but thats meant to be optional if you are happy with your grade the first time.

• Week 3- Form project teams
• Week 7 - Project Due
• Week 10 - (Optional) Resubmit project for higher grade

### Project Reports:

Each week, each group will be required to submit a progress report.  This report will include the hours put into the project for each week.  Each group member will need to log his or her hours along with what he or she did for the week.  The group leader will then compile each report into a master report and submit it to ecommons. The report can be most file formats, but I prefer .doc, .txt or .pdf.  Please don't send me docx...ever :).

Here is a sample report.

You will need to go somewhat in depth about what you did.  If there is mention of code changes, try to be specific about what you did. If you state that you have read some material, please try to indicate where that reading led you and what changes you made as a result of the reading.  I don't want to see this: "I changed code in views.py -- 1 hour".  That means nothing to us.  If you are hosting your forked code on a repository, you can track your progress through commit logs and just submit those to me as your report.

Weekly readings or videos to absorb outside of class. Due on Mondays. Also a 1 page paper due each week on some topic related to the readings. Most of the readings should be available as PDF online. You might have to buy a couple books, but they are the kind that sell for $2 used on Amazon. (Well one of them is currently$0.01+shipping). I'll get these details by the first class.

## Quizzes

Weekly online quizes, due on Mondays. Readings and class lecture and discussion topics are all fair game.

## Online discussion

There will be an online discussion forums on class topics, readings, questions and controversial topics. You need to participate. Plan on 20 minutes daily, 5 days a week.

As for the forums: we will be using Piazza.  Please refer to the piazza course page to sign up for the class forum!

There is a companion course, CMPS 290T, for graduate students. They will be coming to the CMPS119 lectures, and involved in the class projects. When I've done this in the past both undergraduates and graduate students have been overwhelmingly positive on the experience. Graduate students will have some specific responsibilities a little different from undergraduates:

• Research papers to read - 1 per each two week period in addition to undergraduate readings
• Presenting papers - will need to present your research paper in a clear and entertaining way, about 3-5 minutes, bi-weekly
• Option to lead an undergraduate student team, as opposed to code project yourself
• Participate in writing a research paper on a class topic (probably one paper as group for whole 290T class)
• Participate in discussions about how to write a research paper and what goes in it

### Graduate Student Presentations:

As mentioned above, each graduate student will need to present a research paper to his or her liking (from the list we give out...).  Each graduate student will present a paper to the entire class once every two week period.  The presentation needs to be done through powerpoint or through a pdf.  Each presentation should last around 3-5 minutes with a few minutes for questions afterward.  We are looking for a brief summary of the paper and some original ideas about the paper.  Presentations will be submitted through ecommons and brought to the class by the TA on a thumb stick to avoid any lengthy transitions between presentations.