├── .gitignore ├── Assignments ├── NewsTrustDesignThinking │ ├── NewsTrustDesignThinking.md │ ├── NewsTrustDesignThinking.pdf │ ├── TrustDesignFacilitatorsGuide.pdf │ └── TrustDesignProject.pdf ├── Sprint1 │ └── Sprint1.md ├── Sprint2 │ ├── ProjectTicoBackground.docx │ └── django_assignment_1.md └── Sprint3 │ └── intro.md ├── Helpers ├── django_quick_start.md ├── github_command_line_cheat_sheet.md ├── github_for_newbies.md ├── tarbell_installation_instructions.md └── terminal_cheat_sheet.md ├── README.md ├── grad_section_syllabus.md └── syllabus.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.com 4 | *.class 5 | *.dll 6 | *.exe 7 | *.o 8 | *.so 9 | 10 | # Packages # 11 | ############ 12 | # it's better to unpack these files and commit the raw source 13 | # git has its own built in compression methods 14 | *.7z 15 | *.dmg 16 | *.gz 17 | *.iso 18 | *.jar 19 | *.rar 20 | *.tar 21 | *.zip 22 | 23 | # Logs and databases # 24 | ###################### 25 | *.log 26 | *.sql 27 | *.sqlite 28 | 29 | # OS generated files # 30 | ###################### 31 | .DS_Store 32 | .DS_Store? 33 | ._* 34 | .Spotlight-V100 35 | .Trashes 36 | ehthumbs.db 37 | Thumbs.db 38 | 39 | *.pdf 40 | -------------------------------------------------------------------------------- /Assignments/NewsTrustDesignThinking/NewsTrustDesignThinking.md: -------------------------------------------------------------------------------- 1 | # Restoring trust in news: A design thinking exercise # 2 | 3 | ###DUE FOR THURSDAY'S CLASS 4 | 5 | **Reading** 6 | 7 | First, [you should know the place I'm coming from](http://www.niemanlab.org/2016/12/the-people-running-the-media-are-the-problem/). 8 | 9 | Now read this: 10 | 11 | * [Americans' Trust in Mass Media Sinks to New Low](http://www.gallup.com/poll/195542/americans-trust-mass-media-sinks-new-low.aspx) 12 | * [Rosen’s Trust Puzzler: What Explains Falling Confidence in the Press? ](http://pressthink.org/2012/04/rosens-trust-puzzler-what-explains-falling-confidence-in-the-press/) 13 | * [Pew: The Modern News Consumer: Trust and Accuracy](http://www.journalism.org/2016/07/07/trust-and-accuracy/) 14 | * [Public Trust in the News 15 | A Constructivist Study of the Social Life of the News 16 | ](http://reutersinstitute.politics.ox.ac.uk/sites/default/files/Public%20Trust%20in%20the%20News%20A%20Constructivist%20Study%20of%20the%20Social%20Life%20of%20the%20News_0.pdf) 17 | 18 | ###A note about design thinking 19 | 20 | Using the [Stanford Design Schools Bootleg](http://dschool.stanford.edu/wp-content/uploads/2013/10/METHODCARDS-v3-slim.pdf), you can break down design thinking into a series of steps that are purpose built to focus problem solving on human beings. Some people call design thinking human-centered design. The steps are: 21 | 22 | * Empathize: From the Bootleg, "empathy is the foundation of a human-centered design process." In this step you observe users in their daily lives, engage with them through interviews and immerse yourself in what your user experiences. 23 | * Define: From the Bootleg, "the define mode is when you unpack and synthesize your empathy findings into compelling needs and insights, and scope a specific and meaningful challenge." You narrow what you find to an actionable challenge. 24 | * Ideate: From the Bootleg, "ideate is the mode of your design process in which you aim to generate radical design alternatives." Here is where you are going to try out a wide variety of solutions for your project, going past obvious steps to try new things. 25 | * Prototype: From the Bootleg, "prototyping is getting ideas and explorations out of your head and into the physical world. A prototype can be anything that takes a physical form." Here is where you turn your previous steps into something you can show people. 26 | * Test: From the Bootleg, "testing is the chance to get feedback on your solutions, refine solutions to make them better, and continue to learn about your users." Here is where you take your prototypes back to your users to get feedback, refine your solutions, and test again. 27 | 28 | We are on a compressed timescale, so we're going to make a few nips and tucks here and there. 29 | 30 | ###IN CLASS THURSDAY 31 | 32 | The story as a unit of journalism is has largely been unaltered for generations of journalists. The styles of writing may have evolved to become more nuanced and complex, but the headline, byline, series of paragraphs of quotations and attributions is nearly the same now as it ever was. Throughout the decline of trust in news, about the only funamental change in the journalism that people are seeing is the volume of it -- there is much more choice today than ever before. But at its core, the choices on the menu are no different than their predecessors. 33 | 34 | And yet, the internet has given us the chance to rebuild the story in new ways. The internet frees us of the restrictions of the printed story or the broadcast package. Yet, we've done little to change the story. And fewer still have done anything to change the equation when it comes to trust in news. 35 | 36 | Until now. 37 | 38 | Your charge: Redesign the story page to restore trust in news. 39 | 40 | **PART 1:** 41 | 42 | Using a piece of paper and pencil, design the ideal story page for news trust. 43 | 44 | You have three minutes. 45 | 46 | **PART 2:** 47 | 48 | Interview your partner about what they think would improve trust in news. 49 | 50 | You have eight minutes to interview each other: Four minutes each. 51 | 52 | **PART 3:** 53 | 54 | Dig deeper: Follow up on what your first interview found. Ask why often. Look for stories, feelings, emotions. 55 | 56 | You have six minutes to interview each other: Three minutes each. 57 | 58 | **PART 4:** 59 | 60 | Capture findings: Record what your partner told you. What do they want to see? What do you see in their words that they themselves may not see? 61 | 62 | You have three minutes. 63 | 64 | **PART 5:** 65 | 66 | Take a stand with a point of view: Define what your partner is looking for in news trust. 67 | 68 | You have three minutes. 69 | 70 | **PART 6:** 71 | 72 | Sketch five radical solutions to the problem you defined in Part 5. 73 | 74 | You have five minutes. 75 | 76 | **PART 7:** 77 | 78 | Share your solutions with your partner and capture their feedback. 79 | 80 | You have 10 minutes to share with each other: Five minutes each. 81 | 82 | **PART 8:** 83 | 84 | Reflect on the feedback on your solutions and generate a new solution. 85 | 86 | You have three minutes. 87 | 88 | **PART 9:** 89 | 90 | Build your solution (in a sketch). Something your partner can react to. 91 | 92 | You have seven minutes. 93 | 94 | **PART 10:** 95 | 96 | Share your solution and get feedback. 97 | 98 | You have eight minutes to share with each other: Four minutes each. 99 | 100 | ##Your assignment for the weekend## 101 | 102 | Empathize with people. Interview five people each about their news consumption habits, their trust in news and what would make them trust a news story more if it was a part of the story. 103 | 104 | The rules: 105 | 106 | * They cannot be journalists, journalism majors, journalism professors, or anyone involved in the business of journalism in any way. 107 | * No family. 108 | * We will define and start ideating on Tuesday. 109 | 110 | -------------------------------------------------------------------------------- /Assignments/NewsTrustDesignThinking/NewsTrustDesignThinking.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattwaite/JOUR491-News-Applications/974eb4fa332ae24abf224b00d11b6d1ca6b6ed2e/Assignments/NewsTrustDesignThinking/NewsTrustDesignThinking.pdf -------------------------------------------------------------------------------- /Assignments/NewsTrustDesignThinking/TrustDesignFacilitatorsGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattwaite/JOUR491-News-Applications/974eb4fa332ae24abf224b00d11b6d1ca6b6ed2e/Assignments/NewsTrustDesignThinking/TrustDesignFacilitatorsGuide.pdf -------------------------------------------------------------------------------- /Assignments/NewsTrustDesignThinking/TrustDesignProject.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattwaite/JOUR491-News-Applications/974eb4fa332ae24abf224b00d11b6d1ca6b6ed2e/Assignments/NewsTrustDesignThinking/TrustDesignProject.pdf -------------------------------------------------------------------------------- /Assignments/Sprint1/Sprint1.md: -------------------------------------------------------------------------------- 1 | #Sprint 1: News Trust 2 | 3 | Using a story published by a fellow CoJMC student, develop and implement how you might increase the level of reader trust in that story through elements on a new story page. 4 | 5 | Your elements must: 6 | 7 | 1. Be visible on the page. 8 | 2. Be implemented as they might be in a professional news environment. 9 | 3. Contain actual, actionable items (links, data, etc) that you can demonstrate. 10 | 11 | Some useful materials for you: 12 | 13 | * [Bootstrap components](http://getbootstrap.com/components/) 14 | * [KnightLab SoundCite](https://soundcite.knightlab.com/) 15 | * [JQuery Accordions](https://jqueryui.com/accordion/) 16 | 17 | At the end of the sprint, you must present your idea. In your presentation you must: 18 | 19 | 1. Discuss and define your idea. 20 | 2. Based on interviews you did, explain how you think it addds to news trust. 21 | 3. Demonstrate your idea on a page. 22 | 23 | 24 | -------------------------------------------------------------------------------- /Assignments/Sprint2/ProjectTicoBackground.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattwaite/JOUR491-News-Applications/974eb4fa332ae24abf224b00d11b6d1ca6b6ed2e/Assignments/Sprint2/ProjectTicoBackground.docx -------------------------------------------------------------------------------- /Assignments/Sprint2/django_assignment_1.md: -------------------------------------------------------------------------------- 1 | #Django assignment 1 2 | 3 | To start this, you should cd ~ to your home directory. 4 | 5 | Then run the following commands: 6 | 7 | ``` 8 | django-admin.py startproject homework 9 | 10 | cd homework 11 | 12 | python manage.py startapp enrollment 13 | ``` 14 | 15 | You need to edit settings.py to add your enrollment app to the installed apps (see the tutorials for help with this). 16 | 17 | You should then be good to go. 18 | 19 | 1. Create a model to store data on [undergraduate enrollment by year since 1967](http://irads.unl.edu/dmdocuments/050_fall_enrl_level_history.pdf). This model will be very simple, but it must store a year and a number. What type of field should your two fields be? 20 | 2. Create an admin for your model. [The official Django tutorial will show you how to do this](https://docs.djangoproject.com/en/1.10/intro/tutorial02/). In your admin, add three years of data from the above link. 21 | 3. Create a URL, a view and a template to show your three years of data that you entered. You do not need complex HTML, but some basic markup to show the three years would be good. 22 | 23 | Due Tuesday. I'm available Friday afternoon and Monday and available via Slack. -------------------------------------------------------------------------------- /Assignments/Sprint3/intro.md: -------------------------------------------------------------------------------- 1 | # Voice interfaces for news 2 | 3 | One of the more interesting technological developments of the past few years has been the rise of voice assistants. Currently, you have Apple's Siri, Amazon's Alexa, Google's Assistant and Microsoft's Cortana all as voice interfaces for computing. 4 | 5 | Two platforms -- Amazon and Google -- are making a play for the home. And news has been a substantial component of the launch of those platforms. 6 | 7 | But that news content is limited. And it favors broadcasters -- people who create audio content. 8 | 9 | And it's limited to just feeds of news. Headlines. Leads. Updates. Simple stuff. 10 | 11 | ### Let's change all that 12 | 13 | First, some questions to get you started thinking: 14 | 15 | * What is the current experience of news on the Alexa platform? On Google Home? 16 | * How could it be improved? 17 | * How could a voice assistant be used to create engagement with a news brand? 18 | * How could a news organization spread its brand and create audience via voice assistant? 19 | * What information does a news organization have that could be used in voice assistant context? 20 | 21 | **So that's what we're going to do. Between now and the end of the semester, we're going to build tools to connect news brands to voice assistants.** 22 | 23 | ### Reading list 24 | 25 | * [Alexa, give me the news: How outlets are tailoring their coverage for Amazon’s new platform](http://www.niemanlab.org/2016/08/alexa-give-me-the-news-how-outlets-are-tailoring-their-coverage-for-amazons-new-platform/) 26 | * [How to make Amazon’s Alexa read your local news](http://www.gatehousenewsroom.com/2017/02/27/make-amazons-alexa-read-local-news/). FYI: Gatehouse Media is the single largest publisher on Amazon's Alexa. 27 | * [Listening to Bots](https://render.betaworks.com/listening-to-bots-1b22688160c#.3gjgwldh2) 28 | * [Alexa and Google Assistant Have a Problem](https://www.recode.net/2017/1/23/14340966/voicelabs-report-alexa-google-assistant-echo-apps-discovery-problem) 29 | 30 | ### Resources 31 | 32 | **Google Home** 33 | 34 | * [Actions on Google Home](https://developers.google.com/actions/) 35 | * [Conversation Actions](https://developers.google.com/actions/develop/conversation) **WATCH THE VIDEO** 36 | * [API.AI Overview](https://developers.google.com/actions/develop/apiai/) **WATCH THE VIDEO** 37 | 38 | **Alexa** 39 | 40 | * [Alexa Flash Briefing Skill API Feed Reference](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/flash-briefing-skill-api-feed-reference) 41 | * [Understanding Custom Skills](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/overviews/understanding-custom-skills) 42 | * [Steps To Build a Custom Skill](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/overviews/steps-to-build-a-custom-skill) 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /Helpers/django_quick_start.md: -------------------------------------------------------------------------------- 1 | #Installing Django on your computer 2 | 3 | ###Mac users 4 | 5 | If you haven't already, install [Anaconda for Mac](https://www.continuum.io/downloads). After installation, open a Terminal and type these commands. 6 | 7 | ``` 8 | conda create --name django python=3 9 | source activate django 10 | pip install Django==1.10.5 11 | 12 | ``` 13 | 14 | 15 | ###PC users 16 | 17 | If you haven't already, install [Anaconda for Windows](https://www.continuum.io/downloads). After installation, open a Command Prompt and type these commands. 18 | 19 | ``` 20 | conda create --name django python=3 21 | activate django 22 | conda install django 23 | 24 | ``` 25 | 26 | ##Your first Django project 27 | 28 | The first thing you need is the [Django documentation](https://docs.djangoproject.com/en/1.10/). You'll use this a lot. 29 | 30 | Using a dataset of parking tickets, we're going to create an app that will tell show you the top 25 places on campus where parking tickets are written. We'll have a page that lists where those tickets are issued, and when. 31 | 32 | 33 | ``` 34 | django-admin startproject demo1 35 | 36 | cd demo1 37 | 38 | python manage.py runserver 39 | ``` 40 | 41 | Now take your browser and go to [http://127.0.0.1:8000/](http://127.0.0.1:8000/) 42 | 43 | It worked! 44 | 45 | Okay, slow down trigger. You didn't do anything yet. So let's do that. 46 | 47 | ##Models and data 48 | 49 | First, hit control c and quit the server you just started. 50 | 51 | ``` 52 | python manage.py startapp tickets 53 | 54 | ``` 55 | 56 | Now go into the folder tickets and open models.py. 57 | 58 | Models are how we are going to represent our database tables in code. We'll describe those database tables using Python classes, telling Django what our fields will be. 59 | 60 | The general rule on database models is this: Try to represent real life. If there's only one of a thing, store that thing as a table and refer to it. What does that look like? 61 | 62 | ``` 63 | from django.db import models 64 | 65 | class Location(models.Model): 66 | name = models.CharField(max_length=255) 67 | name_slug = models.SlugField() 68 | def __str__(self): 69 | return name 70 | 71 | class Violation(models.Model): 72 | name = models.CharField(max_length=255) 73 | name_slug = models.SlugField() 74 | def __str__(self): 75 | return name 76 | 77 | class Ticket(models.Model): 78 | ticket_number = models.CharField(max_length=255) 79 | issued = models.DateTimeField() 80 | location = models.ForeignKey(Location) 81 | violation = models.ForeignKey(Violation) 82 | def __str__(self): 83 | return self.ticket_number 84 | ``` 85 | 86 | Note a few things: Class names are capitalized. Where things can be normalized -- i.e. the same thing is stored only once, we store it in a separate table -- we do that. Lastly, the order of things matters. We can't ForeignKey -- relate one record to a record in another database -- to a table that doesn't already exist. So we have to create the related table before we can relate to it. 87 | 88 | Now we need to create those database tables. 89 | 90 | Open settings.py inside your demo1 folder (which is in your demo1 folder, of course). Add tickets to installed apps, like this: 91 | 92 | ``` 93 | INSTALLED_APPS = [ 94 | 'django.contrib.admin', 95 | 'django.contrib.auth', 96 | 'django.contrib.contenttypes', 97 | 'django.contrib.sessions', 98 | 'django.contrib.messages', 99 | 'django.contrib.staticfiles', 100 | 'tickets', 101 | ] 102 | ``` 103 | 104 | Then, from the command line, run this: 105 | ``` 106 | python manage.py migrate 107 | ``` 108 | 109 | That will create some database tables that you need regardless of what we've done. These are installed by default. Then run this: 110 | 111 | ``` 112 | python manage.py makemigrations tickets 113 | python manage.py migrate 114 | ``` 115 | 116 | That will make database migrations for our tickets apps and then migrate those to the database. This is the steps you will take every time you change your database models. You create a migration file first, then you migrate it. 117 | 118 | We have data already. We'll talk about how this works in a later lesson. We need to do a few things. First, install pytz 119 | 120 | `pip install pytz` 121 | 122 | Download [this file](https://unl.box.com/s/mdpwobqys1i193dq07v5yyf4w6qrsnrv) and move it into the same folder as your manage.py file. Now create a file called loader.py and add this code. 123 | 124 | ``` 125 | import os, sys, string, csv, datetime, time, django, pytz 126 | from pytz import timezone 127 | 128 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo1.settings") 129 | 130 | django.setup() 131 | 132 | from tickets.models import Location, Violation, Ticket 133 | 134 | from django.template.defaultfilters import slugify, urlize 135 | from django.core.exceptions import ObjectDoesNotExist 136 | 137 | central = timezone('US/Central') 138 | 139 | reader = csv.reader(open("tickets.csv", "rU"), dialect=csv.excel) 140 | next(reader) 141 | for row in reader: 142 | loc = row[2] 143 | loc_slug = slugify(loc) 144 | locate, locadded = Location.objects.get_or_create(name=loc, name_slug=loc_slug) 145 | vio = row[3] 146 | vio_slug = slugify(vio) 147 | violate, vioadded = Violation.objects.get_or_create(name=vio, name_slug=vio_slug) 148 | idate = time.strptime(row[1], "%Y-%m-%d %H:%M:%S") 149 | incdate = central.localize(datetime.datetime(idate.tm_year, idate.tm_mon, idate.tm_mday, idate.tm_hour, idate.tm_min, idate.tm_sec)) 150 | tic = Ticket(ticket_number=row[0], issued=incdate, location=locate, violation=violate) 151 | print(tic) 152 | tic.save() 153 | ``` 154 | Now run that loader.py file. 155 | 156 | ``` 157 | python loader.py 158 | ``` 159 | 160 | Get comfortable, it'll take a few minutes. You're loading 161,000 parking tickets. 161 | 162 | ##URLs, views, templates 163 | 164 | So with our data loaded and our models made, we now move to the workflow part of Django. 165 | 166 | 1. Create a URL. 167 | 2. Point it to a view. 168 | 3. Create the view to provide needed elements to a template. 169 | 4. Create and edit the template. 170 | 5. Look at it on your server. 171 | 172 | Rinse. Repeat. 173 | 174 | So to start, let's do something simple. Open `tickets/views.py` and add this code to what's already there: 175 | 176 | ``` 177 | from django.http import HttpResponse 178 | 179 | def index(request): 180 | return HttpResponse("Hello, world. You're at the homepage.") 181 | ``` 182 | 183 | Now replace `urls.py` in the demo1 folder with this: 184 | 185 | ``` 186 | from django.conf.urls import url 187 | from django.contrib import admin 188 | 189 | from tickets import views 190 | 191 | urlpatterns = [ 192 | url(r'^$', views.index, name='index'), 193 | url(r'^admin/', admin.site.urls), 194 | ] 195 | ``` 196 | 197 | So let's review urls.py. The imports at the top aren't important (for now). What is important is that first url line. What that says is "Create a url, and have it match the regular expression of ... nothing. Just the root domain and nothing after it. So www.mysite.com and nothing else after it." Then point that to views.index, giving it the name of index. 198 | 199 | Note, in views, we created a view called index. So they point to each other now. Run `python manage.py runserver` and go to [http://127.0.0.1:8000/](http://127.0.0.1:8000/). You should see Hello World. 200 | 201 | So let's make this a little more involved. Go back to `views.py` and let's edit it to be a little more complicated. 202 | 203 | ``` 204 | from django.shortcuts import render 205 | from django.http import HttpResponse 206 | from django.db.models import Count 207 | 208 | from tickets.models import Ticket, Violation, Location 209 | 210 | def index(request): 211 | top_location = Location.objects.annotate(num_tickets=Count('ticket')).order_by('-num_tickets')[:10] 212 | top_violation = Violation.objects.annotate(num_tickets=Count('ticket')).order_by('-num_tickets')[:10] 213 | context = {'top_location': top_location, 'top_violation': top_violation} 214 | return render(request, 'tickets/index.html', context) 215 | ``` 216 | 217 | What we've done here is created two querysets -- a term you'll hear a lot -- that query data from oure models. It sounds backwards when you say it, but the queries are simple. Model.objects is the same way as saying "Give me all the objects in the model called Model that fit this following criteria." We can do basic things like filter (name = "Abel Hall") or exclude (same, but instead of Abel Hall we'll get everything BUT Abel Hall). In our case, we annotated the queryset with an aggregate. In our case, it was count. Count the number of tickets at this place, order it by that count, and then only give me the top 10. 218 | 219 | Then, below, we said the page context was going to be our two querysets -- meaning make that data available to the template -- and then render the template with the context. 220 | 221 | If you go to [http://127.0.0.1:8000/](http://127.0.0.1:8000/) you'll get ... an error message. But what's the error? Template not found. Why? Because we haven't made it yet. So that's an error we expect. 222 | 223 | So from the command line, hit control c to exit out of the server. Then type `cd tickets` then `mkdir templates` then `cd templates` then mkdir `tickets` then `cd tickets` then `touch index.html`. That will create a folder called templates, which Django is looking for in our tickets app, and then creates a file called index.html in that folder. 224 | 225 | If you were to type `cd ../../..` and then rerun your server with `python manage.py runserver` you'll see your error page is now gone. It's replaced with ... nothing. Why? Because your template is blank. Let's replace it with this: 226 | 227 | ``` 228 | 229 | 230 |
231 | 232 |git status
8 |
9 | ###Step 2: If you created new files, add them to version control.###
10 |
11 | git add [filename or . for all]
12 |
13 | ###Step 3: Bundle files to be committed to version control.###
14 |
15 | To just commit everything, do this:
16 |
17 | git commit -a -m "A message that tells whoever what you've done"
18 |
19 | If you want to just commit a single file:
20 |
21 | git commit filenamehere -m "Message to whoever here saying what you've done"
22 |
23 | ###Step 4: Kick the kiddies out the door.###
24 |
25 | git push
26 |
27 | ###Step 5. Celebrate.###
28 |
29 | If all worked well, you should see a message telling you how many files were sent to GitHub.
--------------------------------------------------------------------------------
/Helpers/github_for_newbies.md:
--------------------------------------------------------------------------------
1 | #Github for newbies
2 |
3 | We're going to be using Github a lot for class. If you've never used it before, the best way to describe it is like Google Docs cloud functionality + Word's track changes ability to note everything you do + a database of every change + a social platform for you to interact with people. It takes some getting used to, but once you do, you'll wonder how you worked without it.
4 |
5 | * If you don't already have one, create an account on [Github](https://github.com/)
6 |
7 | * If this is your first go with GitHub, use [the desktop client](https://desktop.github.com/). You'll get used to the flow this way with minimal fuss.
8 |
9 | * [It's worth reading up how others use Github](http://knightlab.northwestern.edu/2013/06/13/getting-github-why-journalists-should-know-and-use-the-social-coding-site/).
10 |
11 | Have this done before class. We'll walk through the rest.
--------------------------------------------------------------------------------
/Helpers/tarbell_installation_instructions.md:
--------------------------------------------------------------------------------
1 | #Tarbell#
2 |
3 | For each of you, this will be slightly different.
4 |
5 | **MAC USERS**
6 |
7 | I highly recommend you use a virtual environment. My preferred virtual environment manager is Anaconda. You can [download it here](https://www.continuum.io/downloads). Download the Python 3.5 graphical installer.
8 |
9 | Once you have installed Anaconda (or for those of you who already have it installed), you need to set up a Python 2.7 environment. Open a terminal and type this:
10 |
11 | `conda create --name tarbell python=2.7`
12 |
13 | Before proceeding to Installing Tarbell below, make sure you activate your tarbell environment by typing `source activate tarbell`.
14 |
15 | **PC USERS**
16 |
17 | Tarbell does not work on Windows. Period. And there's other glitches with Windows and open source software (unless you're using the absolute latest version of Windows) that we're just going to avoid by creating a virtual machine. To install a virtual machine, [first download VirtualBox](https://www.virtualbox.org/wiki/Downloads) for Windows hosts and install it.
18 |
19 | Now you'll need a Linux Distribution. I strongly encourage Ubuntu, which you can [download here](https://www.ubuntu.com/download). When you click through the downloads, you do not have to donate. Look for the not now link below the stuff. WARNING: The file you're downloading is quite large. It will take some time.
20 |
21 | To install the virtual machine, click New in VirtualBox. Under Name, just call it Ubuntu. That should make the next two drop downs autopopulate (if not, they should be Linux and Ubuntu (64-bit)).
22 |
23 | For memory size, 1024 MB should be the default. Then check to make sure Create a virtual hard disk is checked in the next area. Click Create, then click Create again. The windows should close.
24 |
25 | Click Start (the big green arrow). A window will pop up asking you for a drive. Click the folder icon on the right and find the Ubuntu file you downloaded. For most of you, that will be in Downloads. Click it, click open, then click Start. Some alerts will pop up at the top. You can click the X to close them.
26 |
27 | When you get a desktop, a window will appear. Click Install Ubuntu. Then click Download updates while installing Ubuntu and then hit continue.
28 |
29 | The next window sounds scary, but isn't. You want to Erase disk and install Ubuntu. To be very clear -- it's just the VIRTUAL disk that's being erased. Not your computer. The virtual machine cannot affect the host machine like that. So click Install Now, then Continue.
30 |
31 | During the installation, you should fill out the forms, setting the time zone, the keyboard. Fill in your name, computer name and a password you will remember. To save you some trouble, click Log in automatically (you'll still need the password for other things, so pick one you'll remember). After you click continue, the installation should proceed. When it's done, it'll ask you to restart your machine.
32 |
33 | After the virtual machine boots up, you can delete the file you downloaded to free up that space.
34 |
35 | As soon as it boots up, click on Devices in the menu bar at the top and click Insert Guest Additions CD image ... and then click Run when the window pops up. You'll be prompted for your password that you created during the installation. Let it install.
36 |
37 | The guest additions will make things like expanding the screen size easier. When it is done installing, click the Power button in the top right corner and go to shut down. Click restart your machine to make the guest additions take effect.
38 |
39 | With guest additions, you should be able to stretch the window to be as wide as you need.
40 |
41 | Your first task in Linux is to pull up a terminal. Click the purple icon in the top left to search your new computer type terminal and click the terminal icon.
42 |
43 | With a terminal open, type:
44 |
45 | * `sudo apt-get update`
46 | * `sudo apt-get upgrade`
47 | * `sudo apt-get install libncurses5-dev libffi-dev`
48 | * `sudo apt-get install python-pip`
49 | * `sudo pip install --upgrade pip`
50 |
51 | You're now (finally) ready to install Tarbell.
52 |
53 |
54 | ##Installing Tarbell
55 |
56 | Step 1: Install Tarbell. You will have to run this command as root (sudo)
57 |
58 | sudo pip install tarbell
59 |
60 | Step 2: Configure Tarbell
61 |
62 | tarbell configure
63 |
64 | Step 3: Answer question one with a y.
65 |
66 | Step 4: Go here [https://cloud.google.com/console/project](https://cloud.google.com/console/project)
67 |
68 | Step 5: Create a new project.
69 |
70 | Step 6: Click on APIs and Auth in the left navigation area. (click on APIs below that if it doesn't open up by default). Find the Drive API and turn it on. Accept the terms of service. There should be four other APIs on by default (BigQuery, Google Cloud SQL, Google Cloud Storage, Google Cloud Storage JSON API). If they are not on, you will get an error message.
71 |
72 | Step 7: Click on Credentials. Click Create New Client ID under the OAuth 2.0 area. In the pop-up window, change the type to Installed Application and the Installed Application Type to 'other'. Click create client ID.
73 |
74 | Step 8: In the new client ID area, click download JSON.
75 |
76 | Step 9: Rename it client_secrets.json (it will have some weirdly crufty file name)
77 |
78 | Step 10: Return to your console and accept the default on where the file is (because it should be there now).
79 |
80 | Step 11: Say yes to wanting to authenticate. Hold down control and click the big url in the terminal and enter in the verification code. Click Allow Access and copy the verification code from your browser and paste it into your terminal.
81 |
82 | Step 12: Enter your google account email address where it asks which account should have access.
83 |
84 | Step 13: SAY NO to setting up S3. We'll do this later when we're ready to publish.
85 |
86 | Step 14: Accept the default for where your projects will be stored.
87 |
88 | Step 15: Look on in terror for you have installed Tarbell and can now rule the world. Or make news apps. One or the other. Your call.
89 |
90 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/Helpers/terminal_cheat_sheet.md:
--------------------------------------------------------------------------------
1 | #Terminal Cheat Sheet#
2 |
3 | One of the first hurdles to get over when you start programming on a Mac or a Linux machine is the terminal. Here’s some quick tips on navigating your computer via the terminal.
4 |
5 | |To do this...|... type this|
6 | |-------------|-----------|
7 | |To list the files in a directory|ls|
8 | |To change to a directory|cd [directory name]|
9 | |To move up one level in the directory tree|cd ..|
10 | |To create a directory|mkdir|
11 | |To create a file|touch [filename]|
12 | |To become a superuser (temporarily)|sudo [command]|
13 | |To change permissions on a file|sudo chmod [number like 777 or 755]|
14 | |To find out where you are in the system|pwd|
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | JOUR491 News Applications
2 | =========================
3 |
4 | A collection of stuff for my News Applications class at the University of Nebraska-Lincoln. More to be added later.
5 |
--------------------------------------------------------------------------------
/grad_section_syllabus.md:
--------------------------------------------------------------------------------
1 | #JOUR891 News Applications#
2 | __Spring 2017__
3 | __T/Th 11:00 a.m. - 12:15 p.m.__
4 | __ANDN 114__
5 |
6 | **Matt Waite, Amy Struthers, instructors**
7 | **Email**: mwaite3@unl.edu
8 | **Twitter**: @mattwaite
9 | **Phones**: (402) 802-5202 cell, (402) 472-5840 office
10 | **Office**: 244 Andersen
11 |
12 | __Course description:__
13 |
14 | How we communicate is changing rapidly and fundamentally. Because the delivery of journalism has been largely unchanged for lengthy periods of time – newspapers for hundreds of years, television and radio for less – there’s been little experimentation with the fundamental delivery of news and information. But the web sets fire to many of the foundations of media delivery systems. Gone are the days of needing millions of dollars for presses, trucks, antennae, FCC licenses, etc. Now, anyone with an idea and the will to make it can be a media mogul. This class is going to be about building new forms of communication, with respect to the past and a sprint into the future.
15 |
16 | __Course goal:__
17 |
18 | * Be introduced to the concepts of news applications and their various forms online today.
19 | * Master basic Python coding, computational thinking and algorithmic approaches to problem solving.
20 | * Be familiar with basic data structures common to journalism, such as databases, CSV and JSON.
21 | * Publish news applications using different methods, including single page apps and dynamic, framework developed apps.
22 | * Explore the intersection of data and narrative, story and structure.
23 |
24 | __Open lab hours:__
25 |
26 | Each Friday throughout the semester, I run something called Maker Hours. It’s an open learning time where anyone who wants to learn about some digital tool or technology can come in and I’ll help. It’s in Room 27 from 1-5. You’re welcome to come learn something new outside of class, or bring your class stuff with you to get questions answered.
27 |
28 | __Texts:__
29 |
30 | All reading materials will be online, freely available and assigned week by week.
31 |
32 | __Grading:__
33 |
34 | In this class, we're going to accomplish three projects, centered on solving a problem that news consumers might have using the web, data and journalism. The projects will be short burn, conception to launch, called sprints. The three project sprints will be.
35 |
36 | * **Restoring trust in news**: If you could build a news website from the ground up to restore trust in news, what would it look like? More importantly, what do other people think would restore trust in news? Can you build that? Using a rapid site building tool called Tarbell, we're going to build experiments in news trust using Design Thinking to guide us.
37 | * **Data-driven automated news**: Communities are making more of their data available in open formats. How could a news organization position itself as a dashboard for civic health? How could a news organization use data and the web to create news or context to news out of data streams that are automatically updated. Using a rapid development framework called Django, we're going to build a data-driven news website. **NOTE**: We will be working with other classes on this. *THERE WILL BE A REQUIRED COURSE MEETING OUTSIDE OF CLASS ON JANUARY 31*
38 | * **Voice assistants and news**: One area exploding into the marketplace are voice assistants like Amazon's Alexa and Google's Home. What place is there for local news on these devices? Is there a service news organizations can provide directly to their audiences either based on the product or outside of it? We're going to have some Google Home's and Amazon Echo's to experiment with and you are going to build voice services for those platforms with an eye toward local news.
39 |
40 | **GRADUATE SECTION**: The state of news on these voice assistants is only now emerging. News, generally, is a primary content provider on the early models, but mostly that is through audio content (podcasts, regular newscasts). To explore this platform, we need to do some basic research about the platform. This is your charge. We need to answer the following questions in a research report you will perform as a group:
41 |
42 | * What news content is available on both Google Home and Amazon Alexa?
43 | * How many news organizations have Alexa skills or Google integration?
44 | * What is the breakdown of existing skills or integration between media type and platform?
45 | * What are the platform owner's future plans for news? You will interview them for this report.
46 | * What interest is there on the part of traditional national, regional and local news organizations, both print and broadcast? We will meet to decide if we should attempt a quantitative look, via survey, or a qualitative view through targeted interviews.
47 | * What interest is there on the part of online news organizations in these platforms?
48 |
49 | My primary interest is in using this report to inform Sprint 3, but I alos foresee interest from several journalism organizations on publishing this research.
50 |
51 | I use standard and basic grading scale.
52 |
53 | |Grade|Percentage|
54 | |-----|----------|
55 | |A+|97-100|
56 | |A|93-96|
57 | |A-|90-92|
58 | |B+|87-89|
59 | |B|83-86|
60 | |B-|80-82|
61 | |C+|77-79|
62 | |C|73-76|
63 | |C-|70-72|
64 | |D+|67-69|
65 | |D|63-66|
66 | |D-|60-62|
67 | |F|59 or below|
68 |
69 | However, your final letter grade will be weighted:
70 |
|Assignment|Weight|
|----------|------|
71 | |Reading quizzes/minor assignments|10%|
72 | |News trust/tarbell assignment|30%|
|Data-driven automated news/Django assignment|30%|
|Voice assistants for local news assignment|30%|
73 |
__Notes on participation:__
74 |
75 | I do not take attendance, but it's a small enough class that I'll notice when you're gone. Your attendance and participation will factor into your grade thusly: When the end of the semester comes around, I made decisions on rounding and reconsiderations based on participation and attendance. If you show up, participate in class and are a positive contribution to the class overall, I round, sometimes generously. If you skip classes, mess around on your laptop, sit in silence when partipation is needed, then your grade is your grade. Either way, you earned it.
76 |
77 |
78 | __Notes on attendance:__
79 |
80 | Yes, we all get sick. Yes, things happen. I don’t want you to be sick in my class any more than you want to be sick. You’ve got no fewer than five ways to get ahold of me. If you are going to miss class, tell me before class. We’ll work it out. But you have to tell me before class for me to help you.
81 |
82 | This said: this class builds each class onto the next one. Miss a class, especially a code class, and you are behind. You’re going to be covering a lot of new material in this class. Miss one at your own peril.
83 |
84 | __Policies__
Here's the short version.
You cheat, you fail, no exceptions.
If I’m doing something that’s keeping you from learning, tell me. Tell the Dean. Tell someone, because that’s not cool. I won’t tolerate it from myself and you shouldn’t either.
85 |
Now the longer versions.
__ACEJMC Competencies__
86 |
87 | After this class, you should be able to:
88 |
89 | * Demonstrate an understanding of the history and role of professionals and institutions in shaping communications;
90 | * Demonstrate an understanding of professional ethical principles and work ethically in pursuit of truth, accuracy, fairness and diversity;
91 | * Understand concepts and apply theories in the use and presentation of images and information;
92 | * Think critically, creatively and independently;
93 | * Conduct research and evaluate information by methods appropriate to the communications professions in which they work;
94 | * Apply basic numerical and statistical concepts;
95 | * Apply tools and technologies appropriate for the communications professions in which they work.
96 |
97 | __Academic integrity:__
98 |
99 | Every student must adhere to the policy on academic integrity set forth in the UNL Student Code of Conduct as outlined in the UNL Bulletin. Students who plagiarize may receive a failing grade on an assignment or for an entire course and may be reported to the Student Judicial Review Board. The work a student submits in a class must be the student's own work and must be work completed for that particular class and assignment. Students wishing to build on an old project or work on a similar project in two classes must discuss this with both professors.
100 |
101 | Academic dishonesty includes:
102 |
103 | * handing in another's work or part of another's work as your own.
104 | * turning in one of your old papers (including something you wrote in high school) for a current class.
105 | * turning in the same or similar paper for two different classes,
106 | using notes or other study aids or otherwise obtaining another's answers for a quiz or an examination.
107 |
108 | Anything and everything you include in your papers that comes from another source must be attributed with proper citation. That includes ideas and opinions.
109 |
110 | Plagiarism consists of using phrases, sentences or paragraphs from any source and republishing them without alteration or attribution. The sources include, but are not limited to, books, magazines, newspapers, television or radio reports, Web sites and other students’ papers.
111 |
112 | __Students with disabilities:__
113 |
114 | Students with disabilities are encouraged to contact the instructor for a confidential discussion of their individual needs for academic accommodation. It is the policy of the University of Nebraska-Lincoln to provide flexible and individualized accommodation to students with documented disabilities that may affect their ability to fully participate in course activities or meet course requirements. To receive accommodation services, students must be registered with the Services for Students with Disabilities (SSD) office, 132 Canfield Administration, 472-3787 voice or TTY.
115 |
116 | __Diversity:__
117 |
118 | The College of Journalism and Mass Communications values diversity, in the broadest sense of the word – gender, age, race, ethnicity, nationality, income, religion, education, geographic, physical and mental ability or disability, sexual orientation. We recognize that understanding and incorporating diversity in the curriculum enables us to prepare our students for careers as professional communicators in a global society. As communicators, we understand that journalism, advertising and other forms of strategic communication must reflect society in order to be effective and reliable. We fail as journalists if we are not accurate in our written, spoken and visual reports; including diverse voices and perspectives improves our accuracy and truthfulness. In advertising, we cannot succeed if we do not understand the value of or know how to create advertising that reflects a diverse society and, thus, appeals to broader audiences.
119 |
120 | ##Class Schedule:##
121 |
122 | A word of warning: This may change. I will move things up and back, depending on how well you’re getting things. If things change, I will update the syllabus on Canvas.
123 |
124 | ### Week 1: Jan. 10-12
125 |
126 | **Tuesday:**
127 |
128 | *In class:* Introduction to news applications
129 |
130 | *Assignments:*
131 |
132 | * Read: [A fundamental way newspaper sites need to change](http://www.holovaty.com/writing/fundamental-change/) by Adrian Holovaty
133 | * Read: [A dao of web design](http://alistapart.com/article/dao) by John Allsopp
134 | * Read: [Code, the newsroom and self doubt](http://veltman.tumblr.com/post/56132893301/code-the-newsroom-and-self-doubt) by Noah Veltman
135 |
136 | Reaction Paper: In 500 words, give me your take on this. Look at the news you read. Could it be structured? What could you do with that structure? What do your answers say about you? Or where they come from? What medium they’re rooted in? And do you think you can do this? Due before next class.
137 |
138 | **Thursday:**
139 |
140 | *In class:* How code is journalism.
141 |
142 | *Assignments:*
143 |
144 | * Watch: [Don’t Fear The Internet parts 1-3](http://www.dontfeartheinternet.com)
145 | * Read: [20 Things I Learned About Browsers and the Web](http://www.20thingsilearned.com/en-US)
146 | * Read: [What is Code](http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/).
147 |
148 | Reaction paper: In 200-300 words, how do you see journalism/communications melding with these ideas? How does news and information pair with the web? How does your understanding of news and communications match up to Ford's Clock with Benefits idea? What ideas are starting to rattle in your head?
149 |
150 |
151 | ### Week 2: Jan. 17-19
152 |
153 | **Tuesday:**
154 |
155 | *In class:* BEGIN SPRINT 1: Trust in news design thinking session.
156 |
157 | *Assignments:*
158 |
159 | * Virtual environment install party. Instructions TBA.
160 | * With your group, select your news trust idea. Write it out into a formal pitch. A form will be provided.
161 |
162 | IF YOU ARE RUSTY OR HAVE NO EXPERIENCE WITH HTML/CSS:
163 |
164 | * Read: [A Beginner's Guide to HTML and CSS 1 - 2](http://learn.shayhowe.com/html-css/)
165 | * Do: [Codecademy: Web Fundamentals 1 - 6](http://www.codecademy.com/tracks/web)
166 |
167 | **Thursday:**
168 |
169 | *In class:* SPRINT 1: Tarbell introduction
170 |
171 | *Assignments:*
172 |
173 | * Using Tarbell, create a single web page using the materials provided. Publish it to your personal Reclaim Host.
174 | * If you don't already have one, sign up for a Github account.
175 |
176 | IF YOU ARE RUSTY OR HAVE NO EXPERIENCE WITH HTML/CSS:
177 |
178 | * Read: [A Beginner's Guide to HTML and CSS 3 - 7](http://learn.shayhowe.com/html-css/)
179 | * Do: [Codecademy: Web Fundamentals 7 - 12](http://www.codecademy.com/tracks/web)
180 |
181 |
182 | ### Week 3: Jan. 24-26
183 |
184 | **Tuesday:**
185 |
186 | *In class:* SPRINT 1: Version control, templates, your project.
187 |
188 | *Assignments:*
189 |
190 | * Choose a project leader in class.
191 | * With your group, set up your project as a Github repository. The project leader should create the repository. The other members should fork that. Exchange code with pull requests. Submit your individual github repository URLs to Canvas.
192 | * In your groups, set out tasks for each person to accomplish within your project. Create each as an issue on the project leader's repository. Begin working on that problem.
193 |
194 | **Thursday:**
195 |
196 | *In class:* SPRINT 1: Guest speaker TBA, project scrum
197 |
198 | *Assignments:*
199 |
200 | * Continue to work on your issues on your project. It is due in one week.
201 |
202 | ### Week 4: Jan. 31-Feb. 2
203 |
204 | **Tuesday:**
205 |
206 | *In class:* SPRINT 1: Finishing touches.
207 |
208 | *Assignments:*
209 |
210 | * Finish your project. Prepare a presentation that will cover the problem you set out to tackle, what you learned from your design thinking exercise, what you did to meet the users needs
211 |
212 | * TUESDAY NIGHT: SPRINT 2 DESIGN JAM. In the new social media lab space, we will meet with the other classes involved in the SPRINT 2 project. THIS IS A REQUIRED MEETING. DETAILS TBA.
213 |
214 | **Thursday:**
215 |
216 | *In class:* SPRINT 1 presentations
217 |
218 | *Assignments:*
219 |
220 | ### Week 5: Feb. 7-9
221 |
222 | **Tuesday:**
223 |
224 | *In class:* SPRINT 2.1 models, views, urls
225 |
226 | *Assignments:* TBA
227 |
228 | **Thursday:**
229 |
230 | *In class:* SPRINT 2.1 urls, views and templates
231 |
232 | *Assignments:* TBA
233 |
234 | ### Week 6: Feb. 14-16
235 |
236 | **Tuesday:**
237 |
238 | *In class:* SPRINT 2.2 Django mini project
239 |
240 | *Assignments:* TBA
241 |
242 | **Thursday:**
243 |
244 | *In class:* SPRINT 2.2 Django mini project
245 |
246 | *Assignments:* TBA
247 |
248 | ### Week 7: Feb. 21-23
249 |
250 | **Tuesday:**
251 |
252 | *In class:* SPRINT 2.3 Data site work
253 |
254 | *Assignments:* TBA
255 |
256 | **Thursday:**
257 |
258 | *In class:* SPRINT 2.3 Data site work
259 |
260 | *Assignments:* TBA
261 |
262 | ### Week 8: Feb. 28-March 2
263 |
264 | **Tuesday:**
265 |
266 | *In class:* SPRINT 2.3 Data site work
267 |
268 | *Assignments:* TBA
269 |
270 | **Thursday:**
271 |
272 | *In class:* SPRINT 2.3 Data site work
273 |
274 | *Assignments:* TBA
275 |
276 | ### Week 9: March 7-9
277 |
278 | **Tuesday:**
279 |
280 | *In class:* SPRINT 2.3 Data site work
281 |
282 | *Assignments:* TBA
283 |
284 | **Thursday:**
285 |
286 | *In class:* SPRINT 2.3 Data site work
287 |
288 | *Assignments:* TBA
289 |
290 | ### Week 10: March 14-16
291 |
292 | **Tuesday:**
293 |
294 | *In class:* SPRINT 2: Finishing touches
295 |
296 | *Assignments:* Finish your sites, prepare to present them.
297 |
298 | **Thursday:**
299 |
300 | *In class:* SPRINT 2 Presentations
301 |
302 | *Assignments:*
303 |
304 | ### Week 11: March 21-23
305 |
306 | **Spring Break**
307 |
308 | ### Week 12: March 28-30
309 |
310 | **Tuesday:**
311 |
312 | *In class:* SPRINT 3: Voice assistants
313 |
314 | *Assignments:*
315 |
316 | * Install party
317 |
318 | **Thursday:**
319 |
320 | *In class:* SPRINT 3: Voice assistants
321 |
322 | *Assignments:*
323 |
324 | ### Week 13: April 4-6
325 |
326 | **Tuesday:**
327 |
328 | *In class:* SPRINT 3: Voice assistants
329 |
330 | *Assignments:*
331 |
332 | **Thursday:**
333 |
334 | *In class:* SPRINT 3: Voice assistants
335 |
336 | *Assignments:*
337 |
338 | ### Week 14: April 11-13
339 |
340 | **Tuesday:**
341 |
342 | *In class:* SPRINT 3: Voice assistants
343 |
344 | *Assignments:*
345 |
346 | **Thursday:**
347 |
348 | *In class:* SPRINT 3: Voice assistants
349 |
350 | *Assignments:*
351 |
352 | ### Week 15: April 18-20
353 |
354 | **Tuesday:**
355 |
356 | *In class:* SPRINT 3: Voice assistants
357 |
358 | *Assignments:*
359 |
360 | **Thursday:**
361 |
362 | *In class:* SPRINT 3: Voice assistants
363 |
364 | *Assignments:*
365 |
366 | ### Week 16: April 25-27
367 |
368 | **Tuesday:**
369 |
370 | *In class:* SPRINT 3: Voice assistants
371 |
372 | *Assignments:*
373 |
374 | **Thursday:**
375 |
376 | *In class:* SPRINT 3 presentations
377 |
378 | *Assignments:*
379 |
380 |
381 |
382 |
383 |
384 |
385 |
--------------------------------------------------------------------------------
/syllabus.md:
--------------------------------------------------------------------------------
1 | # JOUR408 News Applications
2 | __Spring 2017__
3 | __T/Th 11:00 a.m. - 12:15 p.m.__
4 | __ANDN 114__
5 |
6 | **Matt Waite, instructor**
7 | **Email**: mwaite3@unl.edu
8 | **Twitter**: @mattwaite
9 | **Phones**: (402) 802-5202 cell, (402) 472-5840 office
10 | **Office**: 244 Andersen
11 |
12 | __Course description:__
13 |
14 | How we communicate is changing rapidly and fundamentally. Because the delivery of journalism has been largely unchanged for lengthy periods of time – newspapers for hundreds of years, television and radio for less – there’s been little experimentation with the fundamental delivery of news and information. But the web sets fire to many of the foundations of media delivery systems. Gone are the days of needing millions of dollars for presses, trucks, antennae, FCC licenses, etc. Now, anyone with an idea and the will to make it can be a media mogul. This class is going to be about building new forms of communication, with respect to the past and a sprint into the future.
15 |
16 | __Course goal:__
17 |
18 | * Be introduced to the concepts of news applications and their various forms online today.
19 | * Master basic Python coding, computational thinking and algorithmic approaches to problem solving.
20 | * Be familiar with basic data structures common to journalism, such as databases, CSV and JSON.
21 | * Publish news applications using different methods, including single page apps and dynamic, framework developed apps.
22 | * Explore the intersection of data and narrative, story and structure.
23 |
24 | __Open lab hours:__
25 |
26 | Each Friday throughout the semester, I run something called Maker Hours. It’s an open learning time where anyone who wants to learn about some digital tool or technology can come in and I’ll help. It’s in Room 27 from 1-5. You’re welcome to come learn something new outside of class, or bring your class stuff with you to get questions answered.
27 |
28 | __Texts:__
29 |
30 | All reading materials will be online, freely available and assigned week by week.
31 |
32 | __Grading:__
33 |
34 | In this class, we're going to accomplish three projects, centered on solving a problem that news consumers might have using the web, data and journalism. The projects will be short burn, conception to launch, called sprints. The three project sprints will be.
35 |
36 | * **Restoring trust in news**: If you could build a news website from the ground up to restore trust in news, what would it look like? More importantly, what do other people think would restore trust in news? Can you build that? Using a rapid site building tool called Tarbell, we're going to build experiments in news trust using Design Thinking to guide us.
37 | * **Data-driven automated news**: Communities are making more of their data available in open formats. How could a news organization position itself as a dashboard for civic health? How could a news organization use data and the web to create news or context to news out of data streams that are automatically updated. Using a rapid development framework called Django, we're going to build a data-driven news website. **NOTE**: We will be working with other classes on this. *THERE WILL BE A REQUIRED COURSE MEETING OUTSIDE OF CLASS ON JANUARY 31*
38 | * **Voice assistants and news**: One area exploding into the marketplace are voice assistants like Amazon's Alexa and Google's Home. What place is there for local news on these devices? Is there a service news organizations can provide directly to their audiences either based on the product or outside of it? We're going to have some Google Home's and Amazon Echo's to experiment with and you are going to build voice services for those platforms with an eye toward local news.
39 |
40 | I use standard and basic grading scale.
41 |
42 | |Grade|Percentage|
43 | |-----|----------|
44 | |A+|97-100|
45 | |A|93-96|
46 | |A-|90-92|
47 | |B+|87-89|
48 | |B|83-86|
49 | |B-|80-82|
50 | |C+|77-79|
51 | |C|73-76|
52 | |C-|70-72|
53 | |D+|67-69|
54 | |D|63-66|
55 | |D-|60-62|
56 | |F|59 or below|
57 |
58 | However, your final letter grade will be weighted:
59 |
60 | |Assignment|Weight|
61 | |----------|------|
62 | |Reading quizzes/minor assignments|10%|
63 | |News trust/tarbell assignment|30%|
64 | |Data-driven automated news/Django assignment|30%|
65 | |Voice assistants for local news assignment|30%|
66 |
67 | __Notes on participation:__
68 |
69 | I do not take attendance, but it's a small enough class that I'll notice when you're gone. Your attendance and participation will factor into your grade thusly: When the end of the semester comes around, I made decisions on rounding and reconsiderations based on participation and attendance. If you show up, participate in class and are a positive contribution to the class overall, I round, sometimes generously. If you skip classes, mess around on your laptop, sit in silence when partipation is needed, then your grade is your grade. Either way, you earned it.
70 |
71 |
72 | __Notes on attendance:__
73 |
74 | Yes, we all get sick. Yes, things happen. I don’t want you to be sick in my class any more than you want to be sick. You’ve got no fewer than five ways to get ahold of me. If you are going to miss class, tell me before class. We’ll work it out. But you have to tell me before class for me to help you.
75 |
76 | This said: this class builds each class onto the next one. Miss a class, especially a code class, and you are behind. You’re going to be covering a lot of new material in this class. Miss one at your own peril.
77 |
78 | __Policies__
79 |
80 | Here's the short version.
81 |
82 | You cheat, you fail, no exceptions.
83 |
84 | If I’m doing something that’s keeping you from learning, tell me. Tell the Dean. Tell someone, because that’s not cool. I won’t tolerate it from myself and you shouldn’t either.
85 |
86 | Now the longer versions.
87 |
88 | __ACEJMC Competencies__
89 |
90 | After this class, you should be able to:
91 |
92 | * Demonstrate an understanding of the history and role of professionals and institutions in shaping communications;
93 | * Demonstrate an understanding of professional ethical principles and work ethically in pursuit of truth, accuracy, fairness and diversity;
94 | * Understand concepts and apply theories in the use and presentation of images and information;
95 | * Think critically, creatively and independently;
96 | * Conduct research and evaluate information by methods appropriate to the communications professions in which they work;
97 | * Apply basic numerical and statistical concepts;
98 | * Apply tools and technologies appropriate for the communications professions in which they work.
99 |
100 | __Academic integrity:__
101 |
102 | Every student must adhere to the policy on academic integrity set forth in the UNL Student Code of Conduct as outlined in the UNL Bulletin. Students who plagiarize may receive a failing grade on an assignment or for an entire course and may be reported to the Student Judicial Review Board. The work a student submits in a class must be the student's own work and must be work completed for that particular class and assignment. Students wishing to build on an old project or work on a similar project in two classes must discuss this with both professors.
103 |
104 | Academic dishonesty includes:
105 |
106 | * handing in another's work or part of another's work as your own.
107 | * turning in one of your old papers (including something you wrote in high school) for a current class.
108 | * turning in the same or similar paper for two different classes,
109 | using notes or other study aids or otherwise obtaining another's answers for a quiz or an examination.
110 |
111 | Anything and everything you include in your papers that comes from another source must be attributed with proper citation. That includes ideas and opinions.
112 |
113 | Plagiarism consists of using phrases, sentences or paragraphs from any source and republishing them without alteration or attribution. The sources include, but are not limited to, books, magazines, newspapers, television or radio reports, Web sites and other students’ papers.
114 |
115 | __Students with disabilities:__
116 |
117 | Students with disabilities are encouraged to contact the instructor for a confidential discussion of their individual needs for academic accommodation. It is the policy of the University of Nebraska-Lincoln to provide flexible and individualized accommodation to students with documented disabilities that may affect their ability to fully participate in course activities or meet course requirements. To receive accommodation services, students must be registered with the Services for Students with Disabilities (SSD) office, 132 Canfield Administration, 472-3787 voice or TTY.
118 |
119 | __Diversity:__
120 |
121 | The College of Journalism and Mass Communications values diversity, in the broadest sense of the word – gender, age, race, ethnicity, nationality, income, religion, education, geographic, physical and mental ability or disability, sexual orientation. We recognize that understanding and incorporating diversity in the curriculum enables us to prepare our students for careers as professional communicators in a global society. As communicators, we understand that journalism, advertising and other forms of strategic communication must reflect society in order to be effective and reliable. We fail as journalists if we are not accurate in our written, spoken and visual reports; including diverse voices and perspectives improves our accuracy and truthfulness. In advertising, we cannot succeed if we do not understand the value of or know how to create advertising that reflects a diverse society and, thus, appeals to broader audiences.
122 |
123 | ##Class Schedule:##
124 |
125 | A word of warning: This may change. I will move things up and back, depending on how well you’re getting things. If things change, I will update the syllabus on Canvas.
126 |
127 | ### Week 1: Jan. 10-12
128 |
129 | **Tuesday:**
130 |
131 | *In class:* Introduction to news applications
132 |
133 | *Assignments:*
134 |
135 | * Read: [A fundamental way newspaper sites need to change](http://www.holovaty.com/writing/fundamental-change/) by Adrian Holovaty
136 | * Read: [A dao of web design](http://alistapart.com/article/dao) by John Allsopp
137 | * Read: [Code, the newsroom and self doubt](http://veltman.tumblr.com/post/56132893301/code-the-newsroom-and-self-doubt) by Noah Veltman
138 |
139 | Reaction Paper: In 500 words, give me your take on this. Look at the news you read. Could it be structured? What could you do with that structure? What do your answers say about you? Or where they come from? What medium they’re rooted in? And do you think you can do this? Due before next class.
140 |
141 | **Thursday:**
142 |
143 | *In class:* How code is journalism.
144 |
145 | *Assignments:*
146 |
147 | * Watch: [Don’t Fear The Internet parts 1-3](http://www.dontfeartheinternet.com)
148 | * Read: [20 Things I Learned About Browsers and the Web](http://www.20thingsilearned.com/en-US)
149 | * Read: [What is Code](http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/).
150 |
151 | Reaction paper: In 200-300 words, how do you see journalism/communications melding with these ideas? How does news and information pair with the web? How does your understanding of news and communications match up to Ford's Clock with Benefits idea? What ideas are starting to rattle in your head?
152 |
153 |
154 | ### Week 2: Jan. 17-19
155 |
156 | **Tuesday:**
157 |
158 | *In class:* BEGIN SPRINT 1: Trust in news design thinking session.
159 |
160 | *Assignments:*
161 |
162 | * Virtual environment install party. Instructions TBA.
163 | * With your group, select your news trust idea. Write it out into a formal pitch. A form will be provided.
164 |
165 | IF YOU ARE RUSTY OR HAVE NO EXPERIENCE WITH HTML/CSS:
166 |
167 | * Read: [A Beginner's Guide to HTML and CSS 1 - 2](http://learn.shayhowe.com/html-css/)
168 | * Do: [Codecademy: Web Fundamentals 1 - 6](http://www.codecademy.com/tracks/web)
169 |
170 | **Thursday:**
171 |
172 | *In class:* SPRINT 1: Tarbell introduction
173 |
174 | *Assignments:*
175 |
176 | * Using Tarbell, create a single web page using the materials provided. Publish it to your personal Reclaim Host.
177 | * If you don't already have one, sign up for a Github account.
178 |
179 | IF YOU ARE RUSTY OR HAVE NO EXPERIENCE WITH HTML/CSS:
180 |
181 | * Read: [A Beginner's Guide to HTML and CSS 3 - 7](http://learn.shayhowe.com/html-css/)
182 | * Do: [Codecademy: Web Fundamentals 7 - 12](http://www.codecademy.com/tracks/web)
183 |
184 |
185 | ### Week 3: Jan. 24-26
186 |
187 | **Tuesday:**
188 |
189 | *In class:* SPRINT 1: Version control, templates, your project.
190 |
191 | *Assignments:*
192 |
193 | * Choose a project leader in class.
194 | * With your group, set up your project as a Github repository. The project leader should create the repository. The other members should fork that. Exchange code with pull requests. Submit your individual github repository URLs to Canvas.
195 | * In your groups, set out tasks for each person to accomplish within your project. Create each as an issue on the project leader's repository. Begin working on that problem.
196 |
197 | **Thursday:**
198 |
199 | *In class:* SPRINT 1: Guest speaker TBA, project scrum
200 |
201 | *Assignments:*
202 |
203 | * Continue to work on your issues on your project. It is due in one week.
204 |
205 | ### Week 4: Jan. 31-Feb. 2
206 |
207 | **Tuesday:**
208 |
209 | *In class:* SPRINT 1: Finishing touches.
210 |
211 | *Assignments:*
212 |
213 | * Finish your project. Prepare a presentation that will cover the problem you set out to tackle, what you learned from your design thinking exercise, what you did to meet the users needs
214 |
215 | * TUESDAY NIGHT: SPRINT 2 DESIGN JAM. In the new social media lab space, we will meet with the other classes involved in the SPRINT 2 project. THIS IS A REQUIRED MEETING. DETAILS TBA.
216 |
217 | **Thursday:**
218 |
219 | *In class:* SPRINT 1 presentations
220 |
221 | *Assignments:*
222 |
223 | ### Week 5: Feb. 7-9
224 |
225 | **Tuesday:**
226 |
227 | *In class:* SPRINT 2.1 models, views, urls
228 |
229 | *Assignments:* TBA
230 |
231 | **Thursday:**
232 |
233 | *In class:* SPRINT 2.1 urls, views and templates
234 |
235 | *Assignments:* TBA
236 |
237 | ### Week 6: Feb. 14-16
238 |
239 | **Tuesday:**
240 |
241 | *In class:* SPRINT 2.2 Django mini project
242 |
243 | *Assignments:* TBA
244 |
245 | **Thursday:**
246 |
247 | *In class:* SPRINT 2.2 Django mini project
248 |
249 | *Assignments:* TBA
250 |
251 | ### Week 7: Feb. 21-23
252 |
253 | **Tuesday:**
254 |
255 | *In class:* SPRINT 2.3 Data site work
256 |
257 | *Assignments:* TBA
258 |
259 | **Thursday:**
260 |
261 | *In class:* SPRINT 2.3 Data site work
262 |
263 | *Assignments:* TBA
264 |
265 | ### Week 8: Feb. 28-March 2
266 |
267 | **Tuesday:**
268 |
269 | *In class:* SPRINT 2.3 Data site work
270 |
271 | *Assignments:* TBA
272 |
273 | **Thursday:**
274 |
275 | *In class:* SPRINT 2.3 Data site work
276 |
277 | *Assignments:* TBA
278 |
279 | ### Week 9: March 7-9
280 |
281 | **Tuesday:**
282 |
283 | *In class:* SPRINT 2.3 Data site work
284 |
285 | *Assignments:* TBA
286 |
287 | **Thursday:**
288 |
289 | *In class:* SPRINT 2.3 Data site work
290 |
291 | *Assignments:* TBA
292 |
293 | ### Week 10: March 14-16
294 |
295 | **Tuesday:**
296 |
297 | *In class:* SPRINT 2: Finishing touches
298 |
299 | *Assignments:* Finish your sites, prepare to present them.
300 |
301 | **Thursday:**
302 |
303 | *In class:* SPRINT 2 Presentations
304 |
305 | *Assignments:*
306 |
307 | ### Week 11: March 21-23
308 |
309 | **Spring Break**
310 |
311 | ### Week 12: March 28-30
312 |
313 | **Tuesday:**
314 |
315 | *In class:* SPRINT 3: Voice assistants
316 |
317 | *Assignments:*
318 |
319 | * Install party
320 |
321 | **Thursday:**
322 |
323 | *In class:* SPRINT 3: Voice assistants
324 |
325 | *Assignments:*
326 |
327 | ### Week 13: April 4-6
328 |
329 | **Tuesday:**
330 |
331 | *In class:* SPRINT 3: Voice assistants
332 |
333 | *Assignments:*
334 |
335 | **Thursday:**
336 |
337 | *In class:* SPRINT 3: Voice assistants
338 |
339 | *Assignments:*
340 |
341 | ### Week 14: April 11-13
342 |
343 | **Tuesday:**
344 |
345 | *In class:* SPRINT 3: Voice assistants
346 |
347 | *Assignments:*
348 |
349 | **Thursday:**
350 |
351 | *In class:* SPRINT 3: Voice assistants
352 |
353 | *Assignments:*
354 |
355 | ### Week 15: April 18-20
356 |
357 | **Tuesday:**
358 |
359 | *In class:* SPRINT 3: Voice assistants
360 |
361 | *Assignments:*
362 |
363 | **Thursday:**
364 |
365 | *In class:* SPRINT 3: Voice assistants
366 |
367 | *Assignments:*
368 |
369 | ### Week 16: April 25-27
370 |
371 | **Tuesday:**
372 |
373 | *In class:* SPRINT 3: Voice assistants
374 |
375 | *Assignments:*
376 |
377 | **Thursday:**
378 |
379 | *In class:* SPRINT 3 presentations
380 |
381 | *Assignments:*
382 |
383 |
384 |
385 |
386 |
387 |
388 |
--------------------------------------------------------------------------------