What I learned from the first CS courses at the graduate school of USC
I started Scientists and Engineers program at the University of Southern California (USC), Viterbi School of Engineering Computer Science Department in August 2017.
I attended two classes in the first semester, 2017 Fall. I would like write what I learned from these courses.
- CSCI 455x Introduction to Programming Systems Design
- CSCI 570 Analysis of Algorithms
CSCI 455x Introduction to Programming Systems Design
http://www-scf.usc.edu/~csci455/
This course is basically for novice programmers. While I did not want to take it, this class was mandatory for all students in Scientists and Engineers program, so I had to take it. Since I had three years experience as a professional software engineer, CSCI455x was not very interesting.
- Basic algorithms, such as merge sort and binary tree
- Fundamental data structures, such as hash table and linked list
- Java
- C++
I learned them, but they all are what I knew already. Although I was required to take this course, I wanted to avoid attending the lectures. I think you can learn the same topics in Coursera and popular textbooks without paying tuition fee.
On the other hand, there were some advantages of attending the lectures. Since all the students in Scientists and Engineer program took this course, we recognized each other in the classroom soon.
I received an A grade in this course. I guess most of the students got A.
CSCI 570 Analysis of Algorithms
http://www-bcf.usc.edu/~adamchik/570/index.html
This course is fairly good. I learned commonly used Algorithms, such as greedy algorithm, dynamic programming, and maximum flow.
Basically, specific programming languages are not used in CSCI570. We used pseudo code and English to express the ideas of algorithms even in the exams. Since I am not a native English speaker, trying to write answers in English was a good exercise of English.
CSCI570 was not too difficult, not too easy. Most of the students caught up on the lectures and passed the exams. At the same time, this course might be easy for people who do competitive programming. If you have won in competitive programming contests such as AtCoder, Codeforces, CSAcademy, and CodeChef, you will find it painless to get a good grade. I had not tried competitive programming when I started CSCI570, so it was a bit tough to follow up. I got A- in CSCI 570.
We used Algorithm Design as a textbook. I like this book because the author chose to use simple wording to explain complicated algorithms. This method helped me a lot to understand the concept of algorithms by reading chapters again and again.
There was homework each week. All the submissions were graded and we were supposed to get feedback from graders. However, I did not receive the feedback of some of my submissions. I guess that graders were too busy to write the feedback. It disappointed me because some feedbacks were helpful to understand the way to solve the problems.
While assignments weregraded, it did not affect the final grade. This kind of policies is described here.
Who am I?
My name is Ryo Kato. As I wrote in the beginning, I enrolled in Scientists and Engineers program at the University of Southern California (USC), Viterbi School of Engineering Computer Science Department.
I am currently working as a full-time intern for Pinscreen, Inc. and enjoy the summer semester attending CSCI 567 Machine Learning.