CSCI0030 (“CS 3”) is an introductory computer science course specifically developed for concentrators in the humanities and social sciences. Because of this, we’ll be focusing on real-world applications rather than computer science theory. There are no prerequisites, and students from all fields are welcome. The 2027 edition of this course focuses heavily on how (and whether) to use AI to better understand computers and the tools that we can build with them.
Goals
The course will be a hands-on ‘studio’ style course, and will cover a variety of topics that will ultimately lead to the following skills. Open each to see what students will be able to do by the end of the course:
Developing a personal knowledge base incrementally for a research project.
Write a research paper in plain text under version control.
Incrementally add and edit sections of the paper.
Roll back to an earlier version on request.
Integrate a co-author’s edits for a section.
Managing citations, notes, and other assistive information while writing.
Manage the paper’s bibliography from a structured file.
Keep every source in BibTeX or Hayagriva and cite by key.
Explain the difference between DOI, ISBN, URLs, and BibTeX keys.
Run and maintain a workflow to add new citations based on Internet data.
Sourcing data and using computational workflows to analyze them.
Add a reproducible quantitative section to a research paper.
Find and download a public dataset.
Verify LLM written analysis with direct inspection through CLI tools.
Produce a figure based on the analysis.
Using software to help manage submissions, publication formats, and more.
Track submissions in a plain-text event log (CSV).
Explain the distinction between CSV and Google Sheets / Microsoft Excel.
Submit the paper in multiple publication-ready formats.
Build a PDF and Word document according to multiple journal’s requirements.
Publishing multi-format research.
Generate a well-formatted bibliography in various publication-ready formats (Chicago, MLA).
Deploy a static site at a public URL.
Update the live site by committing a change through version control.
Deciding when (and whether) to use AI.
Decide whether an LLM is appropriate for a given scenario, and justify the decision using privacy, accuracy, cost, and/or environmental impact.
Package a repetitive task as either a skill or a software package.
Explain the tradeoffs between an LLM skill and a software package.
Work with an LLM to develop the process, and verify it.
Much of the code required in these topics will be navigated by working with LLMs (Large Language Models). We will use LLMs not only to build tools and analyze data, but also to deepen our understanding of software, the Internet, and of LLMs themselves. This course will not teach you the particulars of any programming language in depth, though you will get some experience working with code, running it on your machine, and evaluating software tools in broad strokes.