This summer, I taught two different immersive coding courses for mass communication students. Called SummerCodeCamp, the courses covered programming concepts for front-end web development and data visualization. I taught one course at the University of Colorado Boulder during their Maymester session and another during Summer II at my home campus of Texas State University.
I spoke about these courses at the Association for Education in Journalism and Mass Communication conference in Minneapolis. In that presentation, I emphasized some of the reasons for teaching communication students to code:
- It’s the language of the web and mobile.
- It’s a problem-solving skill.
- You can use code to tell stories.
- New positions, roles and opportunities in new industries.
- Every industry needs tech-savvy communicators.
- There is a range of programming expertise that can be valuable, from being able to make simple tweaks in a content management system to creating a website for a special project or event to developing a comprehensive news application.
- Everyone in the media realm needs to be able to work on a collaborative team on digital projects. That means speaking the language of code to better communicate with developers and other technology resources.
The CU Boulder course came about when dean of the College of Media, Communication and Information Lori Bergen and chair of the Journalism department Paul Voakes invited me to apply for their Faculty in Residence Summer Term program. I was happy to be selected and spend three weeks exploring the vibrant Boulder community and working with their students.
Three-Week Structure
Most of the Boulder students had not had any web design training prior to the class. We started with an accelerated week of hypertext markup language (HTML), cascading stylesheets (CSS) and responsive design, followed by a week of JavaScript/JQuery and culminating with a week of advanced topic introductions and work on projects. There were quick tutorials on the Bootstrap framework, self-hosted WordPress, scraping and application programming interfaces (APIs), but these were not skills that the students were expected to incorporate into their final projects. The course met Monday-Friday for three hours per day. With 16 students in the course, it was a busy and challenging environment. You can see the schedule for the Boulder session at http://summercodecamp.cindyroyal.net/outline-boulder/.
For the Texas State course, all students had completed basic web design training, so they were already familiar with HTML, CSS, responsive design, Bootstrap and WordPress. The goal was to introduce the programming elements that students could use to add interactivity to their sites and to work with and visualize data. See summercodecamp.cindyroyal.net/outline.
The course was offered for six credit hours, which allowed us to meet Monday-Thursday for four hours per day for five weeks with online assignments on the weekends. The goal of both these courses was to experiment with the format of teaching coding to communication students in the university environment. In the past, I have taught a similar course in the regular semester format, once or twice per week with a total of about three hours per week contact time with students. General feedback from students in those courses indicated that they needed more time with these concepts and help with their projects. And it would be helpful to work on these skills when they had fewer distractions and could meet more frequently.
Coding bootcamps have already become a popular, albeit expensive, option for those wanting to learn to code. Companies like General Assembly, MakerSquare and The Iron Yard offer immersive programs for teaching coding concepts, with the lure of gainful employment upon completion. I wanted to provide some of these opportunities for our students, but offer it within the university system, for college credit and eligible for financial aid.
Range of Topics
The Texas State course covered the following topics:
- HTML Forms — users typically interact with a form to create an interaction on a page, so students need to understand this range of elements.
- Intro to Programming — introduction to basic programming syntax and applications, including variables, data types, if statements, loops, arrays, objects and functions.
- Interactive Examples — a series of examples demonstrate the use of programming concepts on a web page. These exercises illustrated the use of the JavaScript method getElementById to change page content by manipulating the Document Object Model (DOM).
- Integrating Google Charts — using forms and interactivity to manipulate elements with the Google Charts API.
- JQuery — an introduction to the popular JavaScript library that can save time in implementing some of the basic techniques and offer more advanced options.
- Data analysis techniques with Excel and Google Sheets
- Scraping and APIs — a brief introduction to tools that support acquisition of data, as well as Python scripting to customize scraping/API requirements.
- Use of GitHub and Slack
- News App exercise using Python and Flask — I adapted this exercise from Ben Welsh of the Los Angeles Times, who shared it at the National Institute for Computer-Assisted Reporting conference. This exercise provides a template for mapping data points and creating pages based individual items in a data set.
Students were also introduced to design-thinking concepts to help them hone their project ideas. Projects included creating an interactive quiz, using the Google Charts API to make an interactive chart and a final data-driven interactive project. For both courses, I used exercises I created on my CodeActually.com site to provide video tutorials and code samples for each topic.
Student projects included an interactive guide to beer festivals, analysis of stray pets in Austin and a tool for selecting a church in San Antonio. Students picked their own topics and were able to explore issues that were of interest to them. You can see all student projects for both classes at summercodecamp.cindyroyal.net/student-work.
Learning Outcomes
I had a sense that the compressed, immersive format would provide the opportunity to produce greater learning and better projects from more students. Comments from Boulder students indicated that were impressed by how much they learned in a short time and the relevance to communication careers.
- After taking the course, I realize that it’s a much more logical skill than I had been prior assuming. After learning the basics, I realize that understanding the basic logic behind the code can solve a lot of problems. There were many times I felt extremely frustrated when my site wouldn’t work, but realizing that simply paying attention to detail and going through the code step-by-step could solve my problems was the best feeling.
- Before taking this course I would have never associated coding and communicators. I would have typically connected coding with computer science or computer programming. I thought the course would be very difficult and hard to comprehend, but it’s been a lot easier than I anticipated. I was really surprised how quickly I picked up concepts and could fix my own errors. I would have never thought to take a course like this, but I now understand the relevance to occupations in the advertising and public relations field.
- This course was a great tour of web development concepts, most of which were foreign to me just three short weeks ago. The most important thing I learned was that I can, in fact, code. Before this class, coding seemed like something only computer scientists could do, but now I have the genuine feeling that I can do it.
- I have learned so much from taking class! Not just from the work in class but also from the videos we have watched and all of the readings we have done. I love how focused this class is on connecting coding to journalism and showing us how useful coding is for a journalist. I found it so interesting to know that coding is a possibility for me to learn if I sit down, try, and focus.
Texas State students shared similar sentiments about the career relevance and weighed in on the value of the format.
- I think the Monday-Friday, four-hour format really worked for this class because it allowed more time to sink in, do exercises and play with our own material and less time for it to leave our brains in a week. I love the feeling of success in this class. Troubleshooting skills are important in all jobs. More people should strive to do and not rely on others.
- I really enjoyed the class format. I felt we had a larger amount of time to work on projects which helped more with trouble shooting. Cindy really pushed us to understand the code and really understand what the code was doing. I’m really hoping I can get a job as a front-end developer and something where I can not only use these skills, but have the ability to grow and learn more within that position.
- I think one of the most important things we learned over the summer (was) how to apply JavaScript to real life projects that we were working on. The more I look at skills in certain jobs, the more I see that JavaScript is an important skill in the digital workforce. I will definitely be using these skills and concepts in the future because I am hoping to go into a web development career and even look forward to creating my own data-driven projects during graduate school on my own time for fun (and experience, of course).
The challenges in teaching a course of this nature are numerous.
- Having faculty who can teach these courses is a challenge in every program. I started creating CodeActually during my time with the Knight Journalism Fellowship at Stanford University in 2014, but I continue to add and modify tutorials and adjust my approaches, requirements and assignments. It is a time-consuming, and sometimes frustrating, process, but it is extremely rewarding when you are able to introduce these concepts to students.
- Assisting students with these projects can be difficult. Once students get into unique scripting for their own projects, if they have problems, it can be time-consuming, chaotic and stressful to help with troubleshooting, particularly in a large class.
- This immersive format only works during the summer or extended breaks. It would be difficult to offer a course in this format in a regular semester, with students having other courses or work responsibilities to schedule around.
But overall, I think there is value in exploring new formats in teaching skills courses, particularly those that introduce difficult programming concepts. At Texas State, we have experimented with one-hour workshops, introducing short courses on cutting-edge topics. Last fall, I offered a coding short course that had online assignments leading to a weekend workshop. Coding is a key element in the new Digital Media Innovation major and Media Innovation Lab we are launching at Texas State this fall. These skills are emerging as critical to our disciplines, as they more closely mirror characteristics of the technology industry, but with a unique emphasis on storytelling and data presentation. We must continue to explore and experiment with creative ways to integrate them into curriculum.
Cindy Royal is a professor in the School of Journalism and Mass Communication at Texas State University, where she teaches web design and digital media topics. She is also the founding director of the Media Innovation Lab launched Fall 2016. During the 2013-2014 academic year, she was in residence at Stanford University as a Knight Journalism Fellow. In 2013, she was awarded the Charles E. Scripps Journalism and Mass Communication Teacher of the Year, presented by the Association for Education in Journalism and Mass Communication and the Scripps Howard Foundation. More information can be found at cindyroyal.com.