15-112: Fundamentals of Programming and Computer Science
A technical introduction to the fundamentals of programming with an emphasis on producing clear, robust, and reasonably efficient code using top-down design, informal analysis, and effective testing and debugging. Starting from first principles, we will cover a large subset of the Python programming language, including its standard libraries and programming paradigms. We will also target numerous deployment scenarios, including standalone programs, shell scripts, and web-based applications. This course assumes no prior programming experience. Even so, it is a fast-paced and rigorous preparation for 15-122. Students seeking a more gentle introduction to computer science should consider first taking 15-110. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course.
15-110: Principles of Computing
This is a course in fundamental computing principles for students with little to no computing background. It covers the following topics:
- Programming constructs involving sequencing, selection, iteration, and recursion.
- Data organization such as arrays and lists.
- Use of abstraction in computing for data representation, computer organization, computer networks, functional decomposition, and application programming interfaces.
- Use of computational principles in problem-solving like divide and conquer, randomness, and concurrency.
- Classification of computational problems based on complexity, non-computable functions, and using heuristics to find reasonable solutions to complex problems.
- Social, ethical and legal issues associated with the development of new computational artifacts will also be discussed.
05410/05610: User-Centered Research & Evaluation (UCRE)
This course provides and overview and introduction to the field of human-computer interaction (HCI). It introduces students to tools, techniques, and sources of information about HCI and provides a systematic approach to design. The course increases awareness of good and bad design through observation of existing technology, and teaches the basic skills of task analysis, and analytic and empirical evaluation methods. This is a companion course to courses in visual design (51-422) and software implementation (05-430, 05-431). When registering for this course, undergraduate students are automatically placed the wait list. Students will be then moved into the class, based on if they are in the BHCI second major and year in school e.g. seniors, juniors, etc This course is NOT open to students outside the HCI major. When registering for this course, undergraduate students are automatically placed the wait list. Students will be then moved into the class, based on if they are in the BHCI second major and year in school.
05633-B/05433-B: User Interface Lab (Section B - GUI)
This course is a lab complement to 05-630 that focuses on practice in the skills needed for prototyping and development of simple graphical user interfaces. In this lab rapid development tools such as graphical user interface layout editors will be combined with simple code to create functioning interfaces for a range of practical applications. This course is for HCII Masters, BHCI dual majors, and others with basic programming skills, rather than necessarily a strong programming or Computer Science background.