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.
Python/C programming
Understanding of basic data structures and algorithms
Understanding of computer systems basics
Communication about programming
This course is "optional" for GSDS students with CS background, but necessary for those who lack programming/computing knowledge and experiences
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.
Grading
Attendance 5%, Assignments 55%, Midterm 20%, Final 20%
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)
Location
Online (exams could be offline depending on COVID situation)
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!
1. Intro - what are data science and computer science? / Install Python and Jupyter
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
Search
Sort and Recursions
Linked lists, Queues, and Stacks
Hash
Binary search trees
Trees and Traversals
Graphs and Traversals
Discussion on codes - How Tech companies do technical interviews
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
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
Becoming and working as a software engineer - software engineers or researchers at leading Tech companies