Sunday, May 6, 2018

Final Entry

·        What did you like the least about the class?
I thought the lectures could be tedious and pointless sometimes when we were focusing on very obscure Python details. While it is useful to learn some of the strange quirks of Python, I found that we spent too many days focusing on this instead of ideas that could more directly contribute to our understanding of software engineering.
·        What did you like the most about the class?
I really enjoyed the Refactoring and Extreme Programming readings, I thought both of these provided some valuable insight into software engineering practices and design principals. Also, I thought the entire group project was great! I really enjoyed working with my group and learning about all sorts of new technologies such as React and Docker (new to me, but I know a lot about them now). I also thought that when the lectures weren’t focusing on weird Python details, they were pretty useful and informative.
·        What's the most significant thing you learned?
I think all of the technologies I got to learn about were incredibly useful (sorry I can't narrow it down to just one, so Ill just say the most significant thing is the technology in general). My favorite tools I got to use included Postman, Docker, React, unittest, and Flask-RESTful,
·        How many hours a week did you spend coding for this class?
On weeks that a project was due, probably about 30 – 40. On other weeks, probably about 5 – 10.
·        How many hours a week did you spend reading for this class?
At the start of the semester, I read about 3 hours a week. By the end of the semester, I stopped reading altogether (sorry Professor Downing). I did read all of the Refactoring book though and highly recommend it.
·        How many lines of code do you think you wrote?
I definitely wrote over a thousand lines of code for this class. Probably over two-thousand including Collatz and the data scraper we created for IDB.
·        What required tool did you not know and now find very useful?
I really enjoy using Postman for API testing. This tool made it super easy to know if our API had any issues and helped us narrow down exactly which parts of the API were having problems.
·        What's the most useful Web dev tool that your group used that was not required?
We used a library called Fuse.js which made searching our data incredibly simple and functional. It allows for fuzzy search and weighting of specific attributes so we were able to tweak our search to return the optimal (most relevant) results in most cases. The downside to using this library tough is that it means you have to do searching on your front-end, which requires you give all your data to your front-end and then search. If you have a lot of data (we did not) this might not be a practical solution. However, you could still take advantage of Fuse.js on searching small subsets of your data if you want to use it alongside a more robust back-end searching tool.
·        If you could change one thing about the course, what would it be?

I would prefer that more lectures be dedicated to software engineering design principles or tools (like Docker) which could directly help us in our software engineering careers. Right now there are too many lectures dedicated to small random Python facts. Besides that, I really love this course and highly recommend it to almost everyone in UTCS 😊.

Sunday, April 15, 2018

Week 12

What did you do this past week?
This past week consisted of mostly team meetings and designing. The team sat down and planned for what refactoring we needed to do this week. We also looked at the user stories given to us by another team and decided who would do which story. Tony and I also made user stories for another team to help them improve their website.

 What's in your way?
Not much is in my way this week. We have a lot of work to do on refactoring the website but I think it will go relatively smoothly. I also plan to start studying for the test soon and reviewing all of the course material to try to really understand everything. I did really well on the last test, but I feel that this material is more challenging so I will need to study more for this exam than the last. I find some of the refactoring concepts particularly challenging. It is easy to refactor when we are told what needs to be changed, but I think it could be very challenging knowing what to refactor if we are not given as much direction initially.

What will you do next week?
I plan to work on the website, refactor some of the back-end code, and maybe start studying for the final. I also want to finish reading the Refactoring book because I find some of those concepts interesting but I have not had time to read much in the past few weeks.

What's my experience of the class?
The class is going well! I am a little disappointed to hear that the professor will not be in class this week! I was hoping to learn more about refactoring, and am slightly disappointed that the professor is leaving for a week now that we have finally gotten to the section of the course I am interested in.

What's my pick-of-the-week or tip-of-the-week?


Heroku is a hosting platform similar to AWS EC2 but has an unlimited time length free tier and does not require a credit card to sign up. So anyone can publish their site on Heroku and experiment with web software development without having to worry about getting charged!

Sunday, April 8, 2018

Week 11

1       What did you do this past week?
This past week was consumed by finishing the third project phase which involved searching, sorting, and filtering. Most of the logic for these features was completed last weekend or the previous week, and the majority of this week was focused on polishing these features and creating a nice user interface for them on our website.
2     What's in your way?
Nothing is in my way right now. Since we don’t have a project due this week, and the test is a few weeks away, I do not feel like I have much to worry about for this class this week. If anything, the only thing I am concerned with is that I might not have time to do the readings this weekend.
3     What will you do next week?
I want to get caught up with the ‘Refactoring’ readings. I have missed the past few readings but I plan to read the rest of the book this week because I find it very interesting and would like to learn more.
4     What's my experience of the class?
This week was a pretty good week. I felt that everyone in my group worked hard on the project, and that we are all proud of the website we have created. I enjoy the parts of the class where we get to focus on making the website and presenting what we have created to the other groups. I think this class has helped me learn a lot about teamwork, presenting, and communicating my ideas effectively.
5     What's my pick-of-the-week or tip-of-the-week?
My tip of the week is to check out brilliant.org here: https://brilliant.org/computer-science/

This website has some excellent resources and courses for all sorts of computer science topics from algorithms to software engineering. Although it costs money to get the premium version of the site, I think it is worth it because they do a great job of explaining complex topics in very understandable and simple ways. This site makes me wish I could have just taken computer algorithms online instead of at the university because I understand the topics a lot better when working through them on this website.

Saturday, March 31, 2018

Week 10

1.      What did you do this past week?
I spent most of this week working on the next phase of the project for the course. This phase involves searching, sorting, and filtering the data we populated the website with the last phase. Also, we must implement an intuitive and functional front-end so that people can visit our website and search, sort, and filter our models. This week was a lot of designing so that the entire team could be on the same page about how we plan to tackle these features this coming week.
2.      What's in your way?
I am a little concerned that we have not planned out a strong enough design for the searching and sorting features that we plan on implementing next week. While I have no doubt that we will complete these features, I think that having a bit more time to learn about the technology would allow us to come up with a better implementation.
3.      What will you do next week?
We will be implementing the searching, sorting, and filtering features of our website. Also, I need to call AWS so I don’t get charged. I got charged a few weeks ago and requested to see the billing statement, but that is surprisingly difficult to do on AWS.
4.      What's my experience of the class?
I wish we had more time for this phase of the project. I am very busy this week and next and am worried that I will complete this phase before I have had time to fully digest the material and technologies we are using for searching, sorting, and filtering.
5.      What's my pick-of-the-week or tip-of-the-week?
I recommend reading some of the blog posts on Miriam Grobman’s website here: https://www.miriamgrobman.com/blog

I really enjoyed the talk she gave last week and think that we need more talks like this in general. While I do enjoy technical talks, I think it is much more valuable to have talks on equality and the empowerment of minority groups. As CS majors we are constantly exposed to new technical topics; and I think by exposing us more to topics about inclusion, equality, soft skills, and social skills we are able to learn and become more well-rounded people. 

Saturday, March 24, 2018

Week 9

What did you do this past week?
I spent most of last week finishing the second phase of the project which was due last Thursday. This was by far the busiest week I have had for this class as we had a lot left to work on fir the website after spring break. Most of the back-end was finished on or before spring break, so most of the work this past week was with React and SQLAlchemy so that our site looked good and we got the data from our API onto the site effectively.

What's in your way?
I need to study more for the quizzes because I keep missing points for dumb reasons. Even though I know most of the material, I just get confused and stuck under the time constraints and end up missing a question or two. I have been having trouble balancing my time with this class and want to also try to get a head start on the next assignment by beefing up the API for the website so that the next phase of the project will be easier.

What will you do next week?
I plan on reading the Refactoring by Fowler book. I have read what has been assigned so far and have really enjoyed it so far! I also plan on learning more about Docker this week so that I can be prepared to use it in the future.  

What's my experience of the class?
This week has been stressful. I wish we had learned more about React and Javascript in class because there were several issues we ran into that could have been mentioned in class. One issue we had was with the asynchronous nature of Javascript. While doing fetches of data from our API in our React app, we ran into several synchronization issues which lead to data not flowing through our app properly. Mentioning the asynchronous nature of fetching in Javascript would help some students be more prepared for this challenge.

Pick-of-the-week!
I recommend looking into Jenkins as an alternative for Travis.CI on a self-hosted server! This allows for continuous integration just like Travis.CI, but on your own server which you can more closely monitor and fine tune. Very cool tool 😊

Check Jenkins out here:  https://jenkins.io/

Sunday, March 11, 2018

Week 8

What did you do this past week?
This past week we set up the database for our website and continued scrapping more data from the internet to put in the database. I also helped a little bit with front-end development.

What's in your way?
We had some trouble finding a good API to scrape from for camera data. We eventually settled on using data from API’s from Best Buy, EBAY, and Flickr. We still need to do some work to make sure that we can get the correct data we need, especially when pulling data from EBAY. The EBAY camera data might not have the correct price information, so we will either need to find some way to make sure it is the correct MSRP price when we get it from EBAY or just get price information from somewhere else.

What will you do next week?
This week I will be setting up the RESTful API for the website and also writing unit tests for the API. I will learn more about Postman and how to use it to test an API. Also, I need to learn about the Flask library for RESTful API’s. This library has been recommended by several friends who have said it makes API creation a lot simpler.

What's my experience of the class?
I really enjoyed the guest lectures we had this week! I have really wanted to take the UTCS ethics course but have not had the opportunity to yet. This guest lecture gave me some insight into a more objective way of analyzing how to make moral decisions. This mathematical way of analyzing decision making is something I had never even considered before and it is a very interesting way to analyze decision making and morals. I wish we could have more guest lectures like this!

Pick-of-the-week!

My pick of the week is general information about the DDoS attack that hit Github last week. Some attackers abused Github’s Memcache system which lead to a 1.7 Tbps attack which is a new speed record for a DDoS attack. More information about this attack can be found here: https://www.techrepublic.com/article/world-record-ddos-attack-hits-1-7-tbps-thanks-to-memcached-flaw/

Saturday, March 3, 2018

Week 7

What did you do this past week?
I spent most of the past week studying for the test. I felt like I learned a lot while reviewing for the test, and have gained a pretty good grasp on the material covered in this first half of the class. I think overall the test turned out to be pretty fair and was challenging but also a good test of our skills with the topics we have learned in class so far.
What's in your way?
This week my main obstacle is finding the time to work on the website and to set up the database. We plan on having this done before spring break, so this task will probably consume most of the week and will involve a lot of designing. I also am very busy this week with other classes and extracurriculars so finding time to do this will be a challenge.

What will you do next week?
Next week I plan on designing and implementing the database so that we can pull data from in over spring break while we are working on the website. We plan on using Postgres, so I will also need to sit down and really learn the basics of Postgres and how best to integrate it with Flask and our RESTful API.

What's my experience of the class?
I have really enjoyed the class so far! I enjoyed studying for the test and reinforcing my Python and Javascript knowledge. I look forward to learning more about these topics but I also hope that we will be able to learn more about general Software Engineering topics and Refactoring. I am very excited to learn about good code refactoring practices and design principles.

Pick-of-the-week!
My pick of the wee is Trello! Trello is an excellent task management tool created by Atlassian, and makes the week sprint style of programming much more effective in my opinion. Not only can Trello keep track of various tasks that the team is working on, but it is also relatively simple and makes it very easy to look at a list of all the tasks for the week in order to decide what task to work on.

Check out Trello!!!

Saturday, February 24, 2018

Week 6

What did you do this past week?
I mainly focused on learning React.js with my team and getting started on the React components of our website. I really wanted to learn more about front-end and React in this stage, and working closely with the front-end team to create components has helped me a lot. I also spent some time writing a scraper to get data for the site and developed some unit tests using postman.

What's in your way?
I do not understand all of the APIs we are using. In particular I have been having trouble with Flickr. I have not been able to pull all of the data I need from Flickr and the documentation on the site seems super sparse and not very helpful. I need to get this information so the front-end developers have dynamic content for the site, and the database needs to be populated.

What will you do next week?
I plan on working on the scraper and also making more React components. I also need to study a lot for the test which is coming up next week, I do not know much Javascript so I think I will need to spend a lo of time working on syntax and recognizing where my weaknesses are with the language and how to deal with them on the test.

What's my experience of the class?
I have not been enjoying the lectures as much as I did in the beginning. Although I still find them interesting, I wish we could cover more technology related to the projects and software engineering in general. All of the small Python syntax details that we are learning are interesting, I just find them to be a bit repetitive and mundane because we have been covering them for a while.

Pick-of-the-week!
This class has increased my interest in writing a solid testing framework. One good tool to use for unit testing a neural network developed with Tensorflow and Python is the Tensorflow unit-testing framework. This library allows you to create a small simulated environment with test and evaluation data so that you can test the coverage and correctness of your Tensorflow implementation in a similar way to the unites library we used in Collatz.
The Tensorflow unittest library can be found here:

Saturday, February 17, 2018

Week 5

What did you do this past week?
I worked with my team to finish the first project for the course. We spent a lot of this week designing our API and outlining our documentation. This allowed us to get a good idea of what we want to do for the project the rest of the semester. I also spent some time learning React and also figuring out the best way to implement the rest of the website with Flask.

What's in your way?
I have been having trouble learning React. It is kind of tricky and I plan to get a book on it so I can get some more formal training. We also need to write a lot of Unit Tests for the next phase of the project. For the first project, we had some misunderstandings between the front-end and back-end teams in getting the website that we had all agreed upon.

What will you do next week?
I plan to write some unit tests for the back-end of our website. Also, we need to get a better workflow to use between our front-end and back-end so that we are more on the same level of thinking and we can better collaborate. This will allow our team to work in pairs without having to be together all the time but still make a cohesive product.

What's my experience of the class?
I really enjoy the class so far! This project has been great and I look forward to continuing the project in future iterations. I really liked the day of class where we acted as programmers and customers to present our work to other groups. That was a very informative experience that gave us some good ideas for the future of the website.

Pick-of-the-week!
I recommend looking at the Darknet for Python and using it with Yolo for object detection. Darknet streamlines the model training process, and Darkflow is a wrapper for Darknet which allows for use with Tensorflow and other Python libraries. Darknet itself was written in C, so the Python Darkflow library is a nice addition because it allows for use of Python.
You can find Darkflow here:
And Find Darknet here:
And the guy that made darknet has a crazy resume lol:

Saturday, February 10, 2018

Week 4

What did you do this past week?
My group and I finally started on project 2! I am very excited to start on this project and do a lot of the backend work! Setting up the environment and workflow with the team was pretty tricky, we finally decided to use Docker and Amazon EC2 to simplify our workflow and publish our app on the internet. We secured our domain name (natphoto.me) and have already started pushing some front-end work onto the site.

What's in your way?
The part of my team that is working on backend needs to sit down and design the models and schematics for what our backend pipeline and data will look like. I have some experience with Flask but will need to spend more time working with it in order to implement the beginnings of our app’s back-end for this project. I would also like to read up on React so that I can help a little bit with the front-end if possible.

What will you do next week?
I plan on reading up on Flask and React so that I know the basics of all the technologies we will be using to create our app. Also, I plan to implement the back-end for project two as soon as possible in order to jump right into some of the project three requirements so that I can get ahead.

What's my experience of the class?
I wasn’t as interested in the lectures this week as I have been in previous weeks. I don’t have as much interest in the very obscure details of python syntax, and that is mostly what we covered this week which is why I had trouble paying attention. Although it is good to know these small syntax details, I think covering more things related to software engineering and web development would help prepare us for the project and keep people interested in the lectures!

Pick-of-the-week!

I have been using Python to do more image and object recognition this week! I highly recommend checking out YOLO for real-time object detection and deep learning for better object recognition results. Here is the link to YOLO: https://pjreddie.com/darknet/yolo/

Sunday, February 4, 2018

Week 3

What did you do this past week?
I spent most of my time finishing the first project for the course. I was stuck failing the final test on HackerRank for a while and was frustrated because, even after implementing the meta-cache and lazy-cache (on top of other optimizations I discussed last week), I was still failing the final HackerRank test. Turns out I just had a part of my code that could result in an infinite loop because I forgot to increment, and this is why my code was timing out on the final HackerRank test. After figuring this out the rest of the project went smoothly luckily!

What's in your way?
I don’t have anything significant in my way going into this week! I just need to review for the upcoming quiz and meet with my team so we can start on the first group project for the course.

What will you do next week?
I just need to review for the upcoming quizzes and meet with my team so we can start on the first group project. We plan to meet on Monday if the specs of the project have been released. We want to get a head start on this project by starting early.


What's my experience of the class?
My experience has been great so far. I felt like I learned a lot from the first project and turned it in expecting full points, so I think that is a good place to be at this point in the semester. I think I will enjoy the course even more once we start the big group projects.

Pick-of-the-week!
My pick of the week the documentation and tutorials on OpenCV for Python! What better way to practice the Python knowledge learned from Software Engineering with Downing than to read about image manipulation, analysis, and recognition with OpenCV and Python? Some of my favorite lessons include image thresholding, image gradients, Canny edge detection, and contours. Combine these topics with the tutorials on feature detection and machine learning using OpenCV and you will have a pretty wide array of new tools to use with Python!

I have been particularly interested in the image processing tutorials available here: https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_table_of_contents_imgproc/py_table_of_contents_imgproc.html#py-table-of-content-imgproc

Saturday, January 27, 2018

Week 2

What did you do this past week?
The first part of the week I spent most of my time doing the readings and reviewing Python to prepare for the quizzes and projects. I especially found the reading about EXTREME PROGRAMMING (it’s so extreme that it must always be typed with caps-lock on) interesting because it provided me insight into another efficient software development workflow that is supposed to increase efficiency by improving the communication process between customers and programmers. This workflow is somewhat similar to the SCRUM software development framework, so it will be interesting to read further in order to provide more contrast between the two and to understand if, or when, one is better than the other. I plan to discuss this comparison once I finish all of the readings on the topic in a few weeks.
I spent the second half of the week working on the first project for the class. I have made significant progress and am passing 2 out of 3 HackerRank tests right now.

What's in your way?
Currently, I am focusing most of my attention on finishing the first project for the course. Unfortunately, today I had trouble implementing the eager cache optimization for the project. I have completed all other optimizations to the project that I could think of, but this is only allowing me to pass 2 out of 3 tests on HackerRank. I hope to complete the eager cache optimization tomorrow which will also hopefully allow me to pass all the tests with my highly optimized program.
I also did not do as good as I would have liked on a quiz this week, I plan to study more next week for that quiz.

What will you do next week?
I plan to start next week by finishing all the optimizations necessary to pass all the HackerRank tests. Once completed, I will make sure I have completed all of the other requirements in the first project’s workflow including code styling and git requirements.

What's my experience of the class?
I have really enjoyed the class so far and have been especially enjoying the first project! This project has given me practice working with git and also made me more diligent about writing a solid testing suite for my software.

What's my pick-of-the-week?
As mentioned in the previous section, I have been really enjoying learning about Extreme Programming and comparing this framework with SCRUM. If you have not had a chance to work in a SCRUM environment or learned about SCRUM, I highly recommend this FREE web series that will teach you the rules necessary to thrive in a SCRUM workflow. Follow this link for some cool videos on SCRUM: http://scrumtrainingseries.com/

Saturday, January 20, 2018

Week1

My expectations of the class.
The main reason I am taking this class is because I will have a software engineering oriented internship this summer, and I would like some formal training in software engineering from this course. With that being said; my expectations for the course are that I want to be challenged with relatively large scale team projects that are similar to real-world industry projects, I want to develop better technical skills related to software engineering, and I would like to become more experienced with properly testing the software I develop to encourage a more efficient workflow with less time searching for bugs.

What I did this past week.
This past week I was given a basic orientation and overview of the class structure and technologies we will be using. On the second class day, we also worked on some introductory Python concepts such as assert statements, running Python scripts, and importing Python libraries. I spent some of my own time outside of class reviewing Python and preparing for the quiz.

What obstacles are in my way going into next week.
I still need to get my textbooks for the course which include Extreme Programming Installed, Database Design with UML and SQL, and Refactoring: Improving the Design of Existing Code. Also, I would feel much more prepared for the coming weeks if I spent some time practicing and reviewing Python on my own. I plan to work on some Python concepts that we won't be discussing in class in order to gain some elevated understanding.

What I will do next week.
The main things I will be focusing on next week is reviewing Python on my own, practicing on HackerRank to improve my Python mastery, and hopefully getting an early start on the first project for the course which is due the following week. I also will spend some time reviewing for the daily quizzes.

My experience of the class so far.
So far I have not had enough taste for what this class has to offer to properly rate my experience. I did enjoy the first real day of lectures in which we covered the basics of Python. I learned a few tricks about Python that I did not know before and also got a good feel for what to expect in lectures for the rest of the semester. I think I will really enjoy the lectures in this course and am expecting to get a lot out of them.

Pick-of-the-week!
I have been reading through this excellent book covering the basics of web development with Ruby on Rails (https://www.railstutorial.org/book/beginning). The entire book is posted online for free by the author, and Ruby on Rails is a very interesting tool for web development that has led to some very cool software projects on the web. The book is online for free, so there is no reason not to at least skim it to learn some cool Ruby on Rails concepts!



Side note, don’t wait until the night before to do the blog posts for this course. If you want to really have time to reflect on what you have done throughout the week, do the blog post in little bits throughout the week, and then review at the end of the week to solidify your writing and understanding of the week’s material.