CS373 Spring 2019: Final Entry

What did you like the least about the class?

My least favorite part about this class is the fact that the materials taught in class is not related to the project we are working on. We have to learn all the tools and technologies on our own. However, even after the semester, I still don’t feel confident in my web development skills.

What did you like the most about the class?

My favorite part about this class is that we have the chance to learn about Python in depth. While I’ve coded in Python before, there were many features I was not aware of. I now understand why people say Python is a powerful language.

What’s the most significant thing you learned?

The most significant thing I learned is team working. The project has many different components and it is important to split up the work with group members, especially when there are class projects going on.

How many hours a week did you spend coding/debugging/testing for this class?

On average, 5-10 hours depending on the week.

How many hours a week did you spend reading/studying for this class?

On the earlier weeks, I spent some time, less than 2 hours, doing the readings. But later on, I stopped doing the readings because it is not tested in the quiz. Every day before class, I would spend 30 minutes studying for the quiz. Before a test, I would spend around 10 hours preparing for it.

How many lines of code do you think you wrote?

Probably around 1000 lines.

What required tool did you not know and now find very useful?

Git lab issue board is very useful. The issue board helps us keep track of the problems we need to solve in the future and previous issues we’ve solved and how we solved it. It also helps communicate between team mates since the issue can be assigned to certain members.

What’s the most useful Web dev tool that your group used that was not required?

During the front end development, my team used Material UI for some features instead of Bootstrap. The user interface is much better and examples are much more easy to follow.

If you could change one thing about the course, what would it be?

Probably allow more diverse topics on the project. It took my group a long time to find a good topic with API to use. Even then, in the later phases, we did not find out topic that interesting.

CS373 Spring 2019: Yige Wang

What did you do this past week?

This past week, I focused on learning D3 and working on the visualization of our website. My team and I came up with several different ideas and implemented the ones that is most interesting and representative of our data. I also started working on my NLP final project. I have chosen the dataset to use and the neural network model train. However, there was some error I didn’t know how to fix while testing.

What’s in your way?

I still have two presentations and two final projects. For SWE, we have finished making the powerpoint and need to rehearse before class. For iOS, there is some features that we are still working on. My team will meet up tomorrow to work on it. Other than that, I still have a homework for Compilers. This homework is the most difficult one of the semester. Besides the homework, I have two final exams including SWE and Compilers.

What will you do next week? 

Next week, I will first practice SWE presentation with my group. Also, we need to finish the visualization for our developer’s site. Then I need to study for SWE final exam. I think this test will be harder than the midterm and there are much more materials to study. I plan to go over all the notes from lectures and redo the HackerRank problems. I also have to work on Compilers and NLP homework. I am planning on finishing training the model on Friday and starting on the report next week.

What did you think of the talk by Miriam?

I really enjoyed Miriam talking about her experience. It was interesting to learn about different career options that are available to a computer science graduate. It is important that we do not limit ourselves and be open to different possibilities. I also think it is inspiring that she is utilizing her resources to empower women in workplace.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is Anaconda. Anaconda makes it easy to switch between different python environments. It is especially useful when running different projects implemented in python2 and python3.

https://conda.io/projects/conda/en/latest/user-guide/getting-started.html#managing-python

CS373 Spring 2019: Yige Wang

What did you do this past week?

This past week, I worked on a few homework assignments. Compilers took an unexpectedly long time to finish. For me research project, I wanted to implement Google Sign-In in the backend with Scala; however, there were only Java documentation. I tried several different implementations but was not able to resolve some compile errors. On Friday, I planned to go to the Senior Sendoff, but I got caught up in an work and missed the event.

What’s in your way?

It’s towards the end of the semester, so I am finishing up with two projects, SWE and iOS. For both of my projects, my group have to make a presentation in class. For Compilers, I have one more homework and a final on May 21st. On last week of class, I have SWE final exam and NLP final project due.

What will you do next week? 

Next week, I will mainly focus on wrapping up the two big projects of the semester. For SWE, I will work on UI including adding more features on the home page and adding more multimedia on the instance page. For the model pages, I will modify the layout of filtering, sorting and searching blocks. After we finish the project, I will start reviewing for the final. For iOS, I will work on adding a functionality for users to post in a study group once the professor approves my idea. I also need to get started on the Compilers homework.

What was your experience in learning about refactoring?

I think refactoring is very important. During the first two lectures, I felt like the process is pretty similar to what I have been doing while implementing. However, towards the last few lectures, the materials were new to me. While I have heard of Singleton, I never knew what it really was. I think it is interesting to learn about these features that could make the code more efficient.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is Google’s Machine Learning Crash Courses. While I have took the Artificial Intelligence and Neural Networks classes at school, I want to learn more about TensorFlow. Compared to PyTorch, there are some existing tools that are implemented using TensorFlow.

https://developers.google.com/machine-learning/crash-course/

CS373 Spring 2019: Yige Wang

What did you do this past week?

This past week I spent most of the time working on Phase III of our project. It was much easier than I thought probably because I was working on frontend and most work is handled by backend. I also got started on my NLP final project. Finding public data was the primary focus. Since I am graduating this semester, I was wrapping up my research project.

What’s in your way?

For my research project, I will be making a video presentation of what I did in the past few years. This includes some slides introducing our project and a demonstration of different use cases. Other than this, I still have three projects going on. One of them is just getting started and it is a research related to NLP which I wish to put on my resume.

What will you do next week? 

Next week, I have an iOS assignment due on Monday. This is the last assignment for the class. On Tuesday, Compilers homework is due. This ought to be time-consuming because it involves materials taught month ago. I will have to do some reviewing before getting started. Then I would spend some time working on my iOS group project. We wanted to implement messaging in our application, but I found out to do so, we had to pay a $99 fee to become a developer team before accessing it. I will do more research on other ways to approach this problem.

What was your experience of Project #4: IDB3?

In comparison to the previous two phases, this phase was less complicated. We had to collect more data and update our database. We implemented sort and search in the backend and filter in the backend. It wasn’t too much work, so we had some time to optimize the UI of our website.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is Material-UI. While we started with bootstrap and react-bootstrap for our frontend, I later found Material-UI much easier to use. The demonstration and code is much clearer and the UI result looks better to me.

https://material-ui.com/demos/app-bar/

CS373 Spring 2019: Yige Wang

What did you do this past week?

This past week I spent most of the time working on homework and research project. I had homework due every day. For iOS, I implemented an application that shows animation when an image is clicked on. Then I worked on the next phase of our project. For NLP, I trained a recurrent neural network model that can predicts whether the next character following the input string is a consonant or vowel. I also trained a language model that evaluates the perplexity of a given text. I also spent some time writing up final project proposal. I intend to train a model that extract important entities from scientific journals.

What’s in your way?

It’s toward the end of the semester and I will be graduating soon. I hope everything goes well. I still have two projects going on, SWE and iOS. For NLP, I have a final project that involves some research and experiment. I am also hoping to spend more time in the gym next few weeks.

What will you do next week? 

I will be finishing up with Phase III of the Project and get started on my final project for NLP. On Monday, I have an iOS homework due. Hope it is not too time consuming because I haven’t looked at it yet. I will also be working on a video demonstration of my research project.

What was your experience in learning about regular expressions and SQL?

I have always interest in database and I am glad we had a chance to go over SQL. It is very useful to learn about different ways SQL can manipulate and parse data. I will need more time to process the lecture taught on Friday. I did not finish the HackerRank challenge and would not be able to solve it if shows up on the exam. I will spend some time reviewing the materials. As of regular expression, I have found it helpful in several assignments I came across in other classes. I also learnt about it in Compilers class. I think it is a really convenience way to process strings.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is about how Cleverbot works. Cleverbot is a intelligent web application that can have a conversation with humans. The responses it produces is learnt from human input. When it is responding to a sentence, it searches for saved conversations when the human was responding to a similar sentence and respond the same sentence. However, this sometimes would produce outputs that is mean, like “None of Your Business”.

CS373 Spring 2019: Yige Wang

What did you do this past week?

This past week I spent most of the time working on homework and research project. I had homework due every day. For iOS, I implemented an application that times different events. Writing a blog for SWE was a cool experience. I spent some time discussing with peers and it was interesting to hear different opinions. Compilers homework was time-consuming. I have to go back and review materials from last month.

What’s in your way?

I still have two group projects going on and homework due next week. For NLP, I have a final project coming up where I have to either extend a machine translation system or build some conversational dialog system. For iOS, we need to optimize user interface and extend the functionality. For SWE, we need to fix the issues we have from phase 2.

What will you do next week? 

Tomorrow, I will add more functionalities to our iOS project. Including user profile and connection between different database entities. I also need to finish the NLP proposal for a final project. I have several different ideas in mind already. I will talk with the professor during office hour and make a final decision. For my research project, there is a feature I need to implement and test before Tuesday. There was some inconsistent behavior of the application during the weekend. Hope I can have it resolved tomorrow.

What did you think of the talk by Dr. Rich and Dr. Cline?

I really enjoyed the talk by Dr. Rich and Dr. Cline. The topics they mentioned are the ones I have never thought of before. While I tend to consider consequences before making a decision, but the problems I encountered were not as influential as the ones we saw in class. I also liked discussing different situations with peers and write about our decisions. As I write the blog, more questions came to mind and then I realized how complexed the situation was. I wish we will have more talks like this talking about real-world situations we may face in the future.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is an article about rules to follow while using GitLab. I noticed there are some rules my group and I were not following but would make development easier, such as build features on a branch and create merge request to guarantee the version on master branch always works correctly. We did this for our first project and forgot to keep up.

https://about.gitlab.com/2016/07/27/the-11-rules-of-gitlab-flow/

The Ethical Software Engineer

In The Suggestion Box situation, employees of a manufacturing company were asked to provide feedbacks about any facet of the operation. The message president sent to the employees specified the response to be anonymous and their identity would not be disclosed. However, one response from an employee worried the president. This person stated to be turning out defective parts to retaliate. I, as the system administrator, was asked to identify this person through computer usage record.

My first instinct was that I cannot do what the president is asking me to do. The message the president sent was like a promise or statement that no one should be identified for whatever he or she was saying. This may be the only reason why people were telling the truth because they do not have to worry about being punished for saying something bad. If others later find out their identity can be tracked down, no one would trust the anonymizer program or the president. The more I think about the action I was asked to do, worse consequences come to mind.

However, if I do not follow the president’s direction. He would probably be mad at me or even fire me. On his standpoint, it is reasonable to want to find out who this saboteur is. For the greater good of the company, the saboteur should be identified and probably dismissed based on company rules. This should happen only if there actually is someone sabotaging. What if the alleged saboteur was only joking because the response would be anonymous. It doesn’t worth it to loose everyone’s trust simply because of a joke. There may be another scenario where others who said good things about the company might be secretly turning defective parts.

In my opinion, the best way to resolve the situation is to first find the defective parts. Or start tracking parts being produced by each employee and checking them to make sure all parts are working correctly. These defective parts may be from different people. They may also include parts accidentally being produced by some employee. With these defective parts, the president will then be able to track down the people who produced them. Since they may not be doing this intentionally, the president should talk with them and evaluate each person’s situation based on his or her response. If there actually are people intentionally producing defective parts, the president should then collect evidence of such behavior and deal with them under company rule or law. This way, the identify of the response is not leaked and all real saboteurs can be found and dealt with.

In conclusion, one should only act after thorough consideration of all potential consequences. List the problems of each potential solutions and see if there is a way to solve all the problems. If not, evaluate the actions and pick the one that is most aligned with morals. There are many situations like this in life. Sometimes we forget to think before we act. It is important to keep in mind that thinking slowly beforehand about all scenarios could help us make smarter decision.

CS373 Spring 2019: Yige Wang

What did you do this past week?

This past week I worked on my group project for iOS and SWE. Both had due dates during the week. For iOS, I spent lots of time merging conflicts between my group members’ code and mine. Some conflicts were hard to merge and I had to delete and rewrite my code. For SWE, I spent the entire week worked on pagination and database API calls. So glad Professor Downing extended the deadline. We wouldn’t have finished on time other wise.

What’s in your way?

For both of my group projects, my group and I need to get started on the next phase early. Although we are already familiar with the tools we are using, I hope to have a deeper understanding of how things are working. I also hope I can get back to my workout routine. I haven’t worked out in the past two weeks because of midterms and projects.

What will you do next week? 

For iOS class, I have an assignment due tomorrow. I need to finish it in the morning. I also need to meet with my group discussing every one’s TODO list for the next phase and ways to improve our application based on Professor’s comment. For SWE, I need to collected more data on instances of each model. Hopefully, I will also have some time optimizing UI of our website.

What was your experience of Project #3: IDB2?

It was definitely much more complicated than we expected. Also, since it was spring break before the deadline, most people were out of town and did not have time working on the project. We did not notice Cross-origin resource sharing problem when calling other APIs until Thursday when we actually launched our server. Luckily we got an extra day to solve the problem. Although there were many challenges, my group and I helped and supported each other. We will definitely start the next phase early.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is kaggle. It is an online community for people interested in data science and machine learning. There are different challenges and competitions you can take part in. These are real word problems that people can get involved in solving using machine learning knowledges.

https://www.kaggle.com/

CS373 Spring 2019: Yige Wang

What did you do this past week?

This past week I had three midterms. On Monday, I worked on my assignment for iOS class. I did not have any time to review for the midterms because debugging the assignments took longer than I expected. On Tuesday, I had to go to work. In the evening, I finally finished creating the cheatsheet for my NLP exam. On Wednesday, I started reviewing for Compilers. There were lots of memorization. I also went over all the notes for SWE. On Thursday, after taking NLP and Compilers midterm, I retook all HackerRank challenges and went over the notes again with my study group to create a cheatsheet.

What’s in your way?

Since I had three midterms to study for this past week, I did not have time to work on either of my projects. Both of my projects, iOS and SWE are due the week after Spring Break. Although I am going out of town, I still need to make time for them.

What will you do next week? 

I am going out of town during the break, but I will still take time to work on the projects. For iOS project, I plan to at least finish all UI and get started on using Core Data as a database for our application. I will also have an iOS assignment due the Monday after the break, I hope it’s less time consuming than this previous one. For SWE, I am in charge of the front-end. I hope I can finish all front-end related problems during the break.

What was your experience of Test #1?

I think retaking the HackerRank problems we did in class really helped me prepare for the test. I also had a really good cheatsheet, so the problems didn’t take me that long to solve. The hints for each problem were helpful, and I am glad that we can see the actual test cases to understand the questions better. I did have a little bit of struggle connecting to Wifi at the beginning of the test. Many of my peers had the same issue as well. We had to connect to our personal hotspot to access HackerRank. Hope we won’t have the same problem on test 2.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is Core Data. As mentioned above, it works like a database for an iOS application. It is an iOS framework that persist non-trivial data and stores the data in a database in object-oriented way. It also provides other functionalities such as managing data object life cycles, tracking changes to data, saving data to disk, etc.

CS373 Spring 2019: Yige Wang

What did you do this past week?

This past week is probably one of the busiest weeks of this semester. On Monday, I worked on Project #2: IDB1 with my team and spent most of time on front-end of the website. On Tuesday, we started on technical report and noticed we were missing some features on our website. So I spent the whole afternoon modifying the content. On the same day, I had another project due, I had to turn it in the next day because I was too tired to finish it after the SWE project. On Wednesday, my iOS project’s Design Document is due. Since only two out of four members in our team were available, it took us longer time to finish it.

What’s in your way?

I have three midterms coming up before the Spring Break. I’m not exactly sure how the SWE midterm is structured, but I will get started on reviewing the notes. For Compilers, I have 119 vocabularies to memorize. For NLP, we will have a review session on Tuesday, but I should probably review the notes before that day. All my midterms are on the same day, so I need to make sure I have time to study for all of them.

What will you do next week? 

I have two assignments due tomorrow and three midterms on Thursday. I’ll need to finish both assignments today and get started on reviewing tomorrow. All three midterms requires lots of memorization. I’m assuming the SWE test will have questions about different features of python and some actual coding questions where we have to pass all the tests. I will study 1/3 of the notes everyday and hopefully finish everything else by Thursday. For Compilers, I will memorize all the vocabularies Monday and start going over the lecture notes on Tuesday. For NLP, I will work on some practice questions everyday.

What was your experience of Project #2: IDB1?

Project 2 took a little bit longer than I expected, but I really enjoyed working on it with my team. Since I am the only one with experience in front-end development in my team, I mainly worked on the model and instance pages. Finding data was definitely the most consuming part because we are trying to relate instances from different models. Overall, the experience was great. Every member of my team was very responsible, and we worked well together.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is an upcoming talk at GDC by Faculty Candidate Emma Strubell from University of Massachusetts about Amherst, Neural Network Architectures for Fast and Robust NLP. I heard of this event in my NLP class and plan on attending. You can find out more about this event here: https://apps.cs.utexas.edu/calendar/events/287391