Instructor: David Lu
4/20/17
I’m glad to be back in Changchun and to see everyone here at CCUT again.
Some quick facts about me:
Born and grew up in the US (mostly in New York)
Went to college at the University at Buffalo, which is located in upstate NY, near Canada.
Graduated with a BA in Philosophy
Worked on a PhD in Philosophy at Syracuse University (also located in upstate NY - central), specializing in metaphysics and philosophical methodology
Taught philosophy courses over 6 years in ethics, metaphysics and epistemology, critical thinking, and formal logic at Syracuse University
Currently teaching discrete math, introduction to C++, and ethics for computing at Portland State University
2nd year participating in the PSU/CCUT partnership program
One younger brother and one younger sister
What have you learned in CS162 since I last met you?
What have you learned in CS163 with Professor Sun Yang so far?
The goal of CS163 at PSU is to teach students data structures in C.
Students should have leaned basic C syntax and semantics in CS162.
In CS162 at PSU, students learn:
Basic datatypes
Arrays
Control structures (while, do…while, for, if, if…else)
Functions (with pass by reference)
File I/O
Structs and Classes
Pointers and Dynamic memory
Linear Linked Lists
Understanding of recursion at a basic level
How to design an algorithm to solve a problem
Additionally, students are expected to know how to create basic programs individually with a text editor and compile them using g++.
Classes at PSU are 10 weeks long. Students are assigned 5 programming projects during each of these classes.
So students get a lot of practice programming.
Our main goal at PSU is to produce graduates can program well.
PSU students in CS162, CS 163, and CS202 take two Proficiency Demos during each class. (Total 6 of these exams.)
These programming exams are to make sure that PSU students can program on their own before moving to the next class.
During a Proficiency Demo, the student is given a problem and is asked to program a solution without any help from the internet, professor, or classmates.
For example, a CS162 Proficiency Demo problem might look like the following:
Students who do not pass the Proficiency Demos cannot pass the class.
And students who do not pass the class cannot continue to the next class.
These are really pretty easy for students who have practiced programming.
How about another example:
I hope to run my guest lectures in the style that I teach at PSU. And, more importantly, I hope we will have fun while learning.
Please bring your laptops to class so that we can practice programming together.
My philosophy on learning is this:
The best way the learn something is to just play with it
You may use any C++ IDE. But I suggest using a text editor and g++ for those of you who wish to come to PSU.
CS163 is about data structures. We will be looking at implementing linked lists and trees, understanding how they relate to abstraction, and begin to think about searching and sorting algorithms.
We also start to think about software design and performance.
It is important that you learn how to write an algorithm and analyze its performance
It’s also important to have fun!
Let’s do a warm up programming exercise together called FizzBuzz.
In the US, companies sometimes ask the applicant to write this program during an interview. I know someone who was just asked to write FizzBuzz on an interview last week!
It is designed to see if the candidate has any ability to program.
What does the pseudocode algorithm look like?
If you’re done with FizzBuzz, try this one.