17-450/17-950 Crafting Software
Welcome to Crafting Software
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 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. We expect students in this class to have diverse backgrounds and experience. Some students will be self-taught, while others will have taken a programming course such as 02-201, 15-110, 95-898, or the library’s Software Carpentry workshop.
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 twice weekly 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.
Evaluation in the course will be approximately as follows:
- Homeworks: 50%
- Quizzes: 10%
- Final project: 30%
- Participation: 10%