Computing Foundations for Data Science (데이터사이언스를 위한 컴퓨팅)

Fall 2021

Tue/Thu, 11:00 - 12:15

Instructor: Hyung-Sin Kim (hyungkim@snu.ac.kr, Office: 942-416)
TA: Kwangyeon Gill (gil9103@snu.ac.kr)

Summary

This course, as an introductory course for Graduate School of Data Science (GSDS), provides basic knowledge for students lacking computer background so that they can follow advanced computing courses at GSDS and do relative research. This course lets students study basic principles and concepts of programming, how to efficiently organize and manipulate data, and how a program is executed by the underlying computer systems . In doing so, most of the class will be based on Python language due to its convenience and wide usage. At the same time, students will do experience and program in C language a bit, see that Python is more convenient but C is faster and safe, and understand the reason why.

Goals

1. Python/C programming

2. Understanding of basic data structures and algorithms

3. Understanding of computer systems basics

4. Communication about programming

Notes

  1. 1. This course is “optional” for GSDS students with CS background, but necessary for those who lack programming / computing knowledge and experiences.
  2. 2. This course will help students to learn a lot but does require significant devotion. There will be programming assignments every week, if not every lecture.

Logistics

1. Grading

  • ·  Attendance 10%, Assignments 60%, Midterm 15%, Final 15%

2. Textbook

  • ·  Practical Programming – An Introduction to Computer Science Using Python 3.6 (third edition)
  • ·  Introduction to Computing Systems: from bits & gates to C & beyond (third edition)

3. Location

  • ·  Online (exams could be offline depending on COVID situation)

4. Pre-requisite

  • ·  Passion, time and effort (this course covers programming basics at the beginning but is very fast paced)
  • ·  Warm heart to collaborate with peers
  • ·  Learning Python grammars in advance would be helpful!

Content

  • 1. Intro – what are data science and computer science? / Install Python and Jupyter

Python Programming

1. Computer architecture – Abstraction (Thank you operating system and interpreter!)

2. Hello Python! – Expressions, Types, Names, Assignment, and Memory model

3. Functions

4. String

5. Control – Making choices

6. Modules and Classes

7. Lists

8. Loops – Repetitions

9. Sets, tuples, and dictionaries

10. File I/O – Working on real-world data

11. Object-oriented programming

Data Structures and Algorithms

1. Search

2. Sort and Recursions

3. Linked lists, Queues, and Stacks

4. Hash

5. Binary search trees

6. Trees and Traversals

7. Graphs and Traversals

8. Discussion on codes – How Silicon Valley companies do technical interviews

Computer Systems

1. Bits, Data Types, and Operations

2. Semiconductors and Logic Gates

3. von Neumann Model and Machine codes

4. Five great ideas of computer architecture (summary)

5. Linux (Ubuntu) – Most popular operating system for supercomputers

C Programming

1. Hello C! (compiler vs. interpreter)

2. Variables and Operators in C

3. Control structures in C

4. Functions in C

5. Arrays and Pointers

6. I/O in C

7. Dynamic data structures in C

Guest Lecture

1. Becoming and working as a software engineer – software engineers at Google or Facebook