Link Search Menu Expand Document

17-950 Crafting Software

Welcome to Crafting Software

See previous class instances here: 2024 2022, 2021

Do you use programming to solve problems in your field of study? Do you know enough to be dangerous, but wish you could be proud of your code? This course aims to provide PhD students with sufficient knowledge and skills to use programming as part of their work. In this class, you will learn how to identify and find problems in your code. You will learn to read, parse, organize, and transform data. We will teach you to write code collaboratively and refine your programs so others can use them. The course will be a mixture of lecture and guided exercise with a recitation focused on hands on instruction. In this course, students are expected to have been exposed to some basic programming concepts, such as variables, if-statements, loops, and arrays. However, students are not expected to have extensive programming experience. This course is not appropriate for students that have completed more than two courses involving programming. If you have questions about your background and the fit for this class, please don’t hesitate to reach out to the instructors.

Learning Goals

  • Identify the common resources available for developing software and evaluate the quality of the content.
  • Understand important rules and conventions of software systems.
  • Understand and apply common languages and tools used to develop real-world software.
  • Apply collaborative work strategies when developing software.
  • Analyze alternative software tools and select appropriate choices for the problem.
  • Analyze software to diagnose problems and create solutions.
  • Create and deploy a web application that reads, parses, and analyzes data.

Structure of the course

  • Meets thrice weekly
    • Main class: Monday, Wednesday 2:00PM-3:20PM (WEH 4707)
    • Recitation: Friday 2:00PM-2:50PM (WEH 4707)
  • Most classes will include both a lecture and a collaborative in-class exercise
  • There will be weekly homework assignments for students to practice that week’s material
  • There will be a summative final project, in which students will integrate the tools and techniques they have learned into a cohesive whole.