BBM 101 - Introduction to Programming I
Fall 2019
Drawing of Analytical Engine. Image: University of Cambridge
Course Information
Course Description
This course serves as an introduction to the fundamentals of computer science and programming. It aims to help students with little or no programming experience to gain necessary skills to work with abstract notions for solving computational problems. The course is structured around basic topics such as control flow, functions, lists, input and output, simple data structures (sets, dictionaries), testing and debugging, and recursion. The class will use the Python as a medium to provide a basic understanding of basic concepts in computer science, and the students will gain hand-on experience via a set of programming assignments supplied in the complementary BBM 103 Introduction to Programming Practicum.
Time and Location
BBM 101
Section 1: Tuesday at 09:00-11:50 in Clasroom D1
Section 2: Tuesday at 09:00-11:50 in Clasroom D2
Section 3: Tuesday at 09:00-11:50 in Clasroom D3
BBM 103
Lab Section 1: Friday at 11:00-12:50 in Comp. Lab
Lab Section 2: Friday at 13:00-14:50 in Comp. Lab
Lab Section 3: Friday at 15:00-16:50 in Comp. Lab
Instructors
Fuat Akal (Section 1)
akal@cs.hacettepe.edu.trOffice Hours:
Office 202
http://yunus.hacettepe.edu.tr/~akal/
Aykut Erdem(Section 2)
aykut@cs.hacettepe.edu.trOffice Hours:
Office 111
http://web.cs.hacettepe.edu.tr/~aykut
Erkut Erdem(Section 3)
erkut@cs.hacettepe.edu.trOffice Hours:
112
http://web.cs.hacettepe.edu.tr/~erkut
Teaching Assistants
Necva Bölücü
necva@cs.hacettepe.edu.trOffice Hours:
Monday
13:00-14:00
NLP Lab (118)
Bahar Gezici
bahargezici@cs.hacettepe.edu.trOffice Hours:
Tuesday
10:00-11:00
NLP Lab (118)
Yunus Can Bilge
yunuscan.bilge@hacettepe.edu.trOffice Hours:
Z03
Communication
The course webpage will be updated regularly throughout the semester with lecture notes, programming and reading assignments and important deadlines. All other course related communications will be carried out through Piazza. Please enroll the corresponding class pages by following the links https://piazza.com/hacettepe.edu.tr/fall2019/bbm101 and https://piazza.com/configure-classes/fall2019/bbm103.
Pre-requisites
Students are not expected to have any prior programming experience.
Course Requirements and Grading
Grading for BBM 101 will be based on
- two midterm exams (25%+30%),
- a final exam (40%), and
- class participation (5%).
- a set of quizzes (25%) (the lowest 1 quiz grades will be dropped),
- five programming assignments (4+10+20+20+20 = 74%) (done individually), and
- first week attendance (1%).
Policies
All work on assignments must be done individually unless stated otherwise. You are encouraged to discuss with your classmates about the given assignments, but these discussions should be carried out in an abstract way. That is, discussions related to a particular solution to a specific problem (either in actual code or in the pseudocode) will not be tolerated.
In short, turning in someone else’s work, in whole or in part, as your own will be considered as a violation of academic integrity. Please note that the former condition also holds for the material found on the web as everything on the web has been written by someone else.
Attendance to lectures is mandatory. A student who do not attend the lectures more than 4 weeks will fail BBM101 directly with an F1 grade. A student who do not attend more than 1 recitation sessions or do not submit more than 1 assignments will fail BBM103 directly with an F1 grade. You are responsible for all material presented in lectures. Some of the course material might not be covered in the textbook.
Reference Books
CS for All, Christine Alvarado, Zachary Dodds, Geoff Kuenning, Ran Libeskind-Hadas, 2013
The Python Tutorial (available from the Python website)
Think Python, 2nd edition, Allen B. Downey (freely available online) (interactive version)
Introduction to Computation and Programming Using Python, Second Edition, John V. Guttag, MIT Press, August 2016
Schedule
Week | Lecture | Reading and Other Material | Assignments |
---|---|---|---|
1 | What is computation and Computational Thinking [slides] | Guttag 1, Downey 1 Video: The birth of the computer, George Dyson Reading: Computer Science, Allen Newell, Alan J. Perlis, Herbert A. Simon |
|
2 | Binary representations and the Von Neumann architecture [slides] Week 2 Lab Handouts: [slide1, slide2] | Alvarado et al. 4 (excluding 4.5-3-4.5.4) HMMM Simulator |
PA 1 out |
3 | Introduction to Algorithms and Development Strategies [slides] Week 3 Lab Handouts: [slide] | PA 1 due | |
4 | Introduction to Python, Statements, Expressions [slides] | Guttag 2.1, Downey 5.1-5.3 | |
5 | Control flow, Functions [slides] Week 4 Lab Handouts: [slide1, slide2] | Guttag 2.2-2.4, 3.1-3.2, 4.1-4.2, 4.4, Downey 3, 5.4-5.7 | |
6 | Arrays, Tuples, Lists [slides] | Guttag 5.1-5.3, 5.5, Downey 10-12 | PA2 out |
7 | Midterm 1 | ||
8 | Higher Order Functions [slides]Week 5 Lab Handouts: [slide] | Alvarado 3.5-3.8 | PA2 due |
9 | File IO, Sets, Dictionaries [slides] | Guttag 4.6, 5.6, Downey 11, 14.1-14.4, 14.11 | PA3 out |
10 | Debugging, Exceptions, Testing [slides]Week 6 Lab Handouts: [slide] | Guttag 6,7, Downey Debugging sections of each chapter, Appendix A | |
11 | Recursion [slides] | Guttag 4.3, Downey 5.8-5.10, 6.5 | PA3 due, PA4 out |
12 | Midterm 2Week 7 Lab Handouts: [slide] | ||
13 | Understanding Data [slide] | Guttag 11, Downey 14.1-14.4, 14.11 Immigration data on Canada as Excel file bbm101.csv file Breast Cancer Detection codes as Jupyter Notebook Breast Cancer Detection codes as pdf | PA4 due, PA5 out |
14 | Algorithmic Speed [slides]Week 8 Lab Handouts: [slide] | Guttag 9, Downey Appendix B | PA5 due |
Programming Assignments
- Assignment 1 (Due: Oct 25, 2019 (23:59:59))
- Assignment 2 (Due: Nov 29, 2019 (23:59:59))
- Assignment 3 (Due: Dec 12, 2019 (23:59:59))
- Assignment 4 (Due: Jan 03, 2020 (23:59:59))
- Assignment 5 (Due: Jan 12, 2020 (23:59:59))
Resources
General purpose text editors
- Vim (Linux, OS X, Windows)
- Emacs (Linux, OS X, Windows)
- Sublime Text (Linux, OS X, Windows)
- Week 10 Exercise Input File
Setting up Python
PyCharm Edu Integrated Development Environment (IDE) will be used in laboratory classes for learning how to program with Python.
- PyCharm Edu and Python Installation Guide
- Getting Started with PyCharm Edu - a quickstart manual
- Guide to compiling your code on department servers