Software Engineering: Web and Cloud Development - Year 4
Academic Year 2016/17 - Class Log.
Tues 13 Sep 2016: Welcome! Well... almost. We had to adandon ship today due to a flood in the lab (which, I'll admit, is a first). Our first class is now Friday at 10:00am in the UNUM lab. See you then.
Fri 16 Sep 2016: We are off-and-running. This is a 70/30 course (70% for final exam, 30% for CA). CA will be three 10 mark assignments between now and Easter 2017. We'll be working in Python this year, so install Python 3 on your laptop for our next class: next Tuesday at 12:00 noon.
Tues 20 Sep 2016: Started our Python travels. See the ZIP file in your email for today's transcript. Of note, we learned about some Python built-in functions (BIFs), including print, type, help, and dir. Also introduced the wonders of the in operator. Learned about the standard library as well as PyPI.
Thurs 22 Sep 2016: We extended the odds.py program to iterate five times, while sleeping a randomly generated number of seconds on each iteration. We learned that Python code is beautiful thanks to whitepace indentation. Then... just for kicks... we wrote the lyrics to the Beer Song in Python. Next class will introduce Python's built-in data structures.
Fri 23 Sep 2016: Introduced the four built-in data structures: list, tuple, dict, and set. Spent some time working through (and playing with) lists, while exploring the list methods. See today's transcript. And, remember: if the built-in four don't fit your data needs, don't forget to explore what the "collections" module provides (see the standard library documentation).
Thurs 29 Sep 2016: We tried not to panic while we learned a bit more about the list methods, then introduced dictionaries.
Fri 30 Sep 2016: As it was Friday afternoon, we took a little side-trip into the world of Erlang.
Thurs 6 Oct 2016: Finished off dictionaries, looked at Counters, as well as tuples and set. Introduced list comprehensions, then started watching The Beaz...
Fri 7 Oct 2016: Finished watching David Beazley's excellent Chicago PyData talk on Python's built-in superpowers. See my email to your class group for links to important stuff.
Thurs 13 Oct 2016: Explored how Python's functions work (and got into all the nitty-gritty details including a discussion of *args and **kwargs). With our minds sufficiently blown, when decided to take our new function-writing superpowers and create a very simple webapp with Flask (which we had to install). Learned about debugging webapps, as well as the meaning of the 100, 200, 300, 400, and 500 HTTP status codes. Having created the webapp and run it locally, we are now ready for the cloud...
Fri 14 Oct 2016: We uploaded our Flask webapp to PythonAnywhere (after learning about the dunder name equals dunder main idiom). We can now share our webapp with the world...
Thurs 20 Oct 2016: Discussed the PEP 8 style guidelines. Then discussed using the Jinja2 templating system to split the HTML out of our Python code (making everything more maintainable).
Fri 21 Oct 2016: After quickly looking at the "with" statement (for working with text files), we introduced the specification for the first assignment. This assignment is now active and is due at 5:00pm on Thursday November 10th 2016.
Thurs 27 Oct 2016: Looked at sessions as a way to handle "global" state. Looked at what in the standard library can help us with the current assigment. Looked at what can help us on PyPI, too.
Fri 28 Oct 2016: Work on the assignment continues.
Thurs 10 Nov 2016: Many students are getting to the point where their assignment is ready for submission. If uploading to PythonAnywhere, please set "barryp" as your "Teacher" under the Accounts tab to allow Paul access to your code.
Fri 11 Nov 2016: Assignment 1 submission was today. No class next Thursday due to Open Day. Next class is 'code review day' of Paul's solution to the WordGame application.
Fri 18 Nov 2016: Worked through Paul's word game code.Thurs 24 Nov 2016: Discussed the multiple-submit problem (which we solved), then discussed our webapp's race condition. We considered some solutions, then decided to try using a database with our webapp. We then started to install MySQL/MariaDB on our systems, and that's when the problems started...
Fri 25 Nov 2016: With our database up-and-running, we learned about the DBcm module, then used it to connect our Python code up to MySQL/MariaDB and interact with our data programmatically. We also learned about named tuples (as we all read the named tuples handout Paul emailed after class).
Thurs 01 Dec 2016: We added some database-handling code to our webapp, only to have the code fail. We then worked through the solution.
Fri 02 Dec 2016: We added some "simulated" login and logout code to our webapp, but decided there had to be a better way to do this... so we are going to spend next Thursday looking at Python's function decorators to see if they'll help.
Thurs 08 Dec 2016: We talked about the four things needed to understand Python decorators (while also talking about the need for project servers, the coder competition, data science, the glasnost web server, and Jupyter Notebooks).
Fri 09 Dec 2016: We concluded our discussion on Python decorators.
Thurs 15 Dec 2016: Iteration #1 presentations (day 1).
Fri 16 Dec 2016: Iteration #1 presentations (day 2).
Thurs 12 Jan 2017: We have a very quick review of 2016, then played with some word association data in order to get a feel for non-tabular (unstructured) data versus tabular (structured) data. This lead onto a discussion of MongoDB and JSON, which lead onto a discussion of unicorns (yes: unicorns).
Fri 13 Jan 2017: We used pymongo to get most of the data from the norms JSON file into MongoDB. About 800 documents were invalid, however. If your data is already in JSON format and you need to store it in a database, consider MongoDB over all else. If you have tabular data, consider (the likes of) MySQL/MariaDB.
Thurs 19 Jan 2017: Assignment #2 distributed and started.
Fri 20 Jan 2017: Trying not to get depressed today, while everyone else works on Assignment #2... or Erlang (depending on what you are panicking about).
Thurs 26 Jan 2017: Assignment #2 continues...
Thurs 02 Feb 2017: Work on assignment #2 is happening in earnest...
Fri 03 Feb 2017: Assignment #2 is ongoing. Deadline is next Friday (10th).
Thurs 09 Feb 2017: Work on assignment #2 is still happening in earnest... and a bit of panic may be setting in.
Fri 10 Feb 2017: Assignment #2 concludes at the end of today.
Thurs 16 Feb 2017: Started discussing resource management, which leads onto a discussion of "with" as well as context managers and classes. Reviewed class creation in Python, then looked at __enter__ and __exit__ magic methods and how they work. See today's transcripts.
Fri 17 Feb 2017: More on context managers, with discussions on yield, the contextmanager decorator, and generators sending us off on tangents. More Context Managers next week.
Thurs 23 Feb 2017: More on context managers, with the creating of the database.py UseDatabase context manager. Looked at mysql-connector code, as well as told some stories, and started to look at improving the robustness of context manager by adding exception-handling code.
Fri 24 Feb 2017: More on handling exceptions into order to make our context manager more robust. See the ZIP file from today.
Thurs 2 Mar 2017: Concluded our discussion of robust context managers. Unfortunately, there was no time for a rest before we started talking about REST. We'll spend the rest of this module discussing REST... which will form the basis of the... emmm, ehhh.... rest of this module.
Fri 3 Mar 2017: The final assignment (incorrectly designated #4 when it's actually the third one) was distributed. It is based on Morepath and APIs.
Thurs 9 Mar 2017: Troubles getting Morepath to install on PythonAnywhere... interesting.
Thurs 16 Mar 2017: There was more on.... eh... MorePath.
Fri 17 Mar 2017: St. Patrick's Day.
Thurs 23 Mar 2017: Reviewed last 3 year's exam papers (and Paul told some stories, too).
Fri 24 Mar 2017: Discussed more on Data Science.
Thurs 30 Mar 2017: Declan asked a lot of questions which Paul did his best to answer.
Fri 31 Mar 2017: MorePath assignment concludes. PDF to me before end of today, thanks.
Return to the Courses page.