Semester Summary of FL2019 & SP2020
Today, I’m going to review my past academic year in WashU. Before I came to America, I know the education here is the best in the world. After I studied in St. Louis for one year, WashU told me it’s true. Before my summary, I want to thank all professors who taught me and all my teammates who helped me for group projects.
FL2019
Well, this was my first semester in WashU. In the most of time, I was in a state of overwhelming. I have to adapt to English environment as soon as possible. I have to find a good internship for next summer. I have to try my best to follow up all courses. It was a tough semester. But I made it. My first semester GPA is 3.90. It’s not very high compared with some of my excellent friends.
E81 CSE 437S 01 Software Engineering Workshop
The professor is very nice. He was willing to listen to all students’ problems and discuss solutions with students. In this course, we have to develop a group project. The purpose of this course is to simulate the real project development. Although I learned something about software development workflow in my undergraduate university, but I still learned so many valuable skills in this course. Here I want to thank my teammate Yueteng. He is very excellent and he taught me so many things about work, because he had worked in China for at least three years. And I really love his working style: Make a detailed plan for everyone in the group. This is exactly my working style.
We developed a group project named ‘WashU Map’. It was a mobile web app. WashU students, staff and professors can use this app to find some items in WashU, such as printers, ovens, rooms. We can also use this app to send automatic emergency messages. Here is an introduction video.
What I did:
- Front-end development. I designed and developed the whole front-end by myself.
- Collected real data. We need real data in WashU to build our web app.
- Designed the paper prototype. Our paper prototype iterated multiple versions and passed the standard requirement of alpha and beta demo.
- Wrote reports and gave presentations.
- Discussed user requirements with teammates and professor.
What I learned:
- Scrum workflow. We have a real scrum meeting weekly, weekly progress reports and three-weeks reports about last week.
- Trello. It’s a very helpful tool to follow up your project development and divide the work.
- Google Map API. I was responsible for the whole front-end. I used Google Map API to get the position and distance of items in WashU.
- SUI Mobile. It’s a UI library which I used to design front-end to be friendly to mobile users.
- Paper prototype. It’s a good way to confirm our requirements.
In my opinion, this is one of my most satisfying courses. It’s not difficult. My final grade is A. The professor liked our project. And I learned so many required skills for my future work. What’s more, thanks to Yueteng’s careful guidance, the project was progressing very smoothly. This is also my favorite group project. I’d like to recommend this course to all CS students.
E81 CSE 451A 01 Video Game Programming II
THIS IS THE MOST FUN COURSE IN WASHU!!!!!
The professor is very interesting! The course content is very interesting! The assignment is very easy! The project is very interesting and easy! In this course, we learned how to use Unity to develop 3D game. The professor talked about some topics about game and industry. The professor also taught students how to develop 3D games in detail.
The final project is a group project. We designed a 3D game like ‘Dark Soul’ by using Unity. The most interesting part is you can play other students’ projects on the final day of this class. You cannot imagine how interesting your classmates’ games are. Finally, I got A+ for this course. I really like this course.
What I did:
- Developed a 3D game like ‘Dark Soul’ by using Unity.
- Discussed with professor and classmates about game industry. Honestly, I wanted to be a game engineer before I came to America. This is the reason I chose this course. But then I found it was a little difficult to find a job as a game engineer.
What I learned:
- Develop 3D games by using Unity.
- C#.
- Current status of the game industry。
If you ask me “which course is more interesting than Video Game Programming II”, my answer is “Video Game Programming I”.
E81 CSE 546T 01 Computational Geometry
This is a very difficult course. I only got A-. But the professor taught very well. The content and algorithm are not easy. There were only four assignments and two exams. But these four assignments were very tough. I remembered the average grade of the first assignment in the class is only 70. The grades of my first 2 assignments and final exam were not good. I thought I would get B or B-. But I designed a web project to show the details of algorithm. The professor wanted to use my project as a tool for explaining algorithms in class. I think this is the reason I got higher grade than I thought.
This course talked about geometry. It’s about computer graphic algorithm. The content is a little difficult. The professor would talk about some algorithms to compute geometry.
My final project is a graphical applet about how to compute range tree. My applet implements range tree in 1D, 2D and 3D scenes including how to build a 1D, 2D and 3D range tree and how to query in 1D, 2D and 3D range tree. My applet is able to show the process and result of building and querying range tree in 1D, 2D and 3D scenes. There is a link of demo video: 2D and 3D scene or 1D scene
What I did:
- Developed a helpful web project for the professor to explain the algorithm in 1D, 2D and 3D scene.
What I learned:
- Some topics about how to use algorithm to compute geometry including range tree, convex hull, Delaunay Graph and so on.
- Three.js. It’s a useful library to design a 3D web project.
Anyway, if you are not interested in geometry, I don’t recommend this course.
Job Hunting
It was my first time to look for a job in America. I applied so many jobs online. Obviously, many Internet companies didn’t consider me as a qualified candidate, or I’m not good enough compared with other candidates. I know I have little working experience. Most Chinese universities don’t support students to work before graduation. Our summer vacations are too short to work as an intern. I actually regret it. I should secretly go out to work while in school.
I got two interviews, Amazon and Intuit. I passed Amazon OA. It was not difficult. But I failed my VO. After interview, I thought the coding problem was not difficult. I guess I was too nervous to do it well. After all, it was my first interview in America. I got Intuit offer as an intern. HR told me more 90% interns would get return offer. And Intuit is very nice to its employees. I’d like to recommend this company to my friends. I’m going to start my internship at the end of May. But I have to work from home due to the special time. I guess coronavirus will affect me to get the return offer.
SP2020
This is a special semester for most students in America. After the coronavirus began to spread in America, almost all universities decided to change all courses online. What’s more, students can change the option of the courses before the end day of the class. This means I can change grade option to pass/fail option before the end of semester. Obviously, many students got good GPA. I got 4.0 GPA. I guess this is so called ‘fortune in misfortune’.
E81 CSE 541T 01 Advanced Algorithms
This is the most difficult course of my SP2020 semester. The professor was very nice and taught very well. Only the content of this course was difficult. This course is not for some normal algorithms. I chose this course because I wanted to improve my skills to design and develop algorithms. But this course talked more about NP problems. This is the only course that I changed grade option to pass/fail option. And, of course, I passed it.
This is a theoretical course. It only has some assignments and two exams. Exams are not very difficult, but assignments are not easy.
What I learned:
- Divide and Conquer
- NP problems
- Randomized algorithms
E81 CSE 523S 02 Systems Security
I chose this course for two reasons:
-
I think I need to learn something about system security for my future work.
-
My friend told me the workload of this course is small.
I agreed with what my friend said only if you listened to class carefully and did studios seriously. The professor was very nice. She would talk about some security news. And our studios and homework are very easy if you listened to her class carefully. My final grade is A. Most of my studios and homework are full points, except homework3 I got 19/20.
What I did:
- I used my machine to hack in another machine by using some vulnerable programs.(Of course it’s legal)
What I learned:
- How to use VirtualBox.
- Some common commands to work on Ubuntu.
- Security principles.
- Networks vulnerable.
- How to explore stack buffer overflow.
- Fuzz.
- Work with stack address.
- Control addresses and shell code.
- How to hack in a vulnerable machine.
It’s a helpful class. I recommend CS students to take this course. As an engineer, you need to learn some basic knowledge about system security.
E81 CSE 511A 01 Introduction to Artificial Intelligence
Thanks to my teammate Yuhang, he helped me to finish our group projects. Actually, this course is a Berkeley course. Except one exam, our homework and ppt come from the Berkeley course. If you are interested in AI, I recommend this course. I chose this course because my adviser suggest this course to me. Exam is very easy. Homework is easy too. You need to design a pacman game effectively by using some AI algorithms. For the final project, you need to design two agents to beat your classmates’ agents. My final grade is A.
What I did:
- Designed effective AI agents from what I learned in class.
What I learned:
- Search(BFS, DFS, A*, uniform)
- Constraint Satisfaction Problems
- Expectimax
- Markov Decision Processes
- Reinforcement Learning
- Markov Models
- Bayes Nets
- Python
E81 CSE 503S 11 Rapid Prototype Development and Creative Programming
Most of my friends told me that the workload of this course is very large. But I don’t agree. I’m good at web development, so this course is easy for me. But if you know nothing about front-end and back-end, this will be very difficult for you. My final grade is A+. Most of my personal and group projects are full points. There are total 7 projects.
Module 1
Module 1 only has a personal project. Module 1 introduces the fundamentals of HTML and CSS. You will first make a static document using HTML and CSS, and then you will make a portal to a DuckDuckGo search.
What I did:
- Designed some web pages by using HTML and CSS.
What I learned:
- Git
- HTML and CSS
Module 2
Module 2 introduces you to Linux, a command-line environment, the Apache web server, and PHP. You will create and configure your own cloud instance, install Apache and related software, and then form groups to make a simple file sharing site.
What I did:
- Finished Git tutorial.
- Developed most functions of a complex file sharing site.
What I learned:
- Linux
- Amazon Web Services
- SSH
- Apache
- PHP
- Web application security
Module 3
In Module 3, you will learn about MySQL, a web application database. Here is my link.
What I did:
- Build a simple news website using PHP and MySQL.
What I learned:
- Web application security
- MySQL
- PHP
Module 4
In Module 4, you will learn the fundamentals of Python, a popular scripting language, and Regular Expressions, which give you power in text processing.
What I learned:
- Python
- Regular Expression
Module 5
In Module 5, you will learn JavaScript, the dominant client-side web language. JavaScript is the third and final programming language you will learn in CSE 330.
What I did:
- Built a calendar web site by using Vue.js, PHP, MySQL and Axios. Here is the link.
What I learned:
- JavaScript
- Ajax and Json
- jQuery
- Web Application Security
- Axios
- Vue.js
Module 6
Module 6 builds upon the JavaScript skills you learned in Module 5.
What I did:
- Created a multi-room chat server using Node.JS and Socket.IO
What I learned:
- Node.js
- Socket.IO
Module 7
We want to develop a website like: https://coronavirus.1point3acres.com/en . We know it’s a difficult time for people all over the world. Coronavirus has already spread the world, especially in the United States. So we want to build a website for people who lived in US now to check their situation. They can see data of coronavirus in US including the number of confirmed cases and deaths and daily new cases and deaths in each state. They can also see some important news about coronavirus in US. They can commit a comment about these news. Here is the link.
What I did:
-
I’m responsible for the front-end. I used Vue.js, chart.js, dataTable.js and bootstrap to develop this project.
Summary
Anyway, I learned so many things in my first academic year in America. I hope I will not forget these valuable knowledge.😄
Thank to all professors and my friends!