Category Archives: faq

Resources for learning more Python

Over the course of this class, I’ve gotten several exit tickets asking how we can get better at Python. The following are resources that can be a good start. Some I have tried, some I haven’t. Be aware that sites vary in quality.

Learning Python

Codecademy: Full disclosure, this is my favorite code learning platform. The lessons are bite-sized and interactive, and it is an entirely web-based platform so you don’t have to install anything. I like it so much I pay for a personal subscription. There are, however, some free courses, including the first one I ever did on Python. An important caveat: only the Python 2 course is free, and we’ve been doing Python 3 in class, because Python 2 is deprecated (that means: no longer being developed–it will never again be updated). There are some differences in syntax, but the basics of logic and data structures are the same.

 

Dr. Chuck’s Python for Everybody: I have also done this course, when it was free on Coursera (it’s now pay on Coursera). All the materials are still, free, however, including Dr. Chuck’s lectures on YouTube. You will have to make sure Python and a text editor are installed on your computer. You can work through the lessons on your own, and I’d be happy to meet with you for any questions about setting up Python on your computer.

 

Free to us at Grinnell: LinkedIn Learning has many Python modules/tracks.

 

Other free resources I haven’t personally tried:

 

Python practice

Wouldn’t it be great if there was a site that just had a new small Python problem to solve every day to keep building skills? If you find that site, please let me know. Aside from paying for Codecademy, I haven’t found a great way to find small daily lessons served up automatically.

The best I’ve found is websites with a variety of problems and solutions. Warning: some of these are incomplete and may be frustrating.

This ebook includes Python exercises: Python Workbook: Brief Introduction with Exercises and Solutions by Ben Stephenson

This ebook will help you take Python further with applied tasks: Automate the Boring Stuff With Python by Al Sweigart

Becoming Pythonic

“Pythonic” is an adjective that means to not just accomplish a coding task but to do it in a Python-specific way. FizzBuzz is a canonical coding problem that you can solve in any language, but in Python, you can solve it in one line.

If you’d like to feel cool like that, try delving into this list of Python one-liners

 

February 9th Question

One question that popped into my head while we did the image representation lab was the representation of three dimensional images on a computer. For example, a Disney film. All characters shown in their films are seen as “3d” because they operate with three axes.

However, these images aren’t actually 3 dimensional, we just perceive them to be. This raises the question, how are these three dimensional images stored on a computer? They aren’t in the format of.jpeg or .gif because they aren’t still images. I looked into the method of storing 3d images (for this link it is best to look under CAD or Graphics), however, there are so many different formats, and further research deemed that there are so many different file formats and each file format is incredibly specific to the type of software used to design the 3d models used (for example .blend files used for the application Blender).

At the end of the day, the file format might not matter much in the grand scheme of things, however knowing the specific use for each one matters when it comes to fine tuning details can help make our representations clearer (we saw this in our exploration of .gif and .jpeg file formats). While it could initially seem intimidating looking at all of these file formats, professionals in their field know how to deal with all of these formats, knowing which ones to use when, and which ones line up with the program they use. However, this does create and educational divide, especially given the creative nature of animation. It no longer takes a love of drawing to become an animator, but you must also study these new instruments of animation, making the industry that much more difficult to get into.

2/2 Character Representation and White-Eurocentrism

In a stereotypical GWSS major moment, I found myself wondering if anyone involved in the creation of Unicode or ASCII wasn’t a white, European, cisgender man. While there is certainly nothing wrong with white, European, cisgender men inventing things, humans do have a tendency to create things that are reflective of themselves. During ASCII’s first iteration in 1963, the only character representations available were specifically for the English language. However, Unicode was also primarily developed by white men, so despite the product itself reflecting broader diversity in the world the programmers still do not. To gain a better understanding of why white men are dominant forces in programming, we can turn to university graduation data.

In 1960, 35% of Bachelor’s degree recipients, 31% of Master’s degree recipients, and 10% of Ph.D. recipients were women. These percentages increased to 49%, 49%, and 29% respectively in 1980. In addition, despite women making up approximately a third of the labor force in 1960, but “only made up about 3.5% of all lawyers, 5.8% of clergy, 6.8% of
doctors, and 4.2% of physicists” (https://files.eric.ed.gov/fulltext/EJ1062478.pdf). Women were predominantly employed as clerks, sale clerks, and secretaries in the 1960s only for the top careers in 1980 to be secretaries, teachers, and bookkeeping.

Truly, the TLDR of it all is that a lack of equitable education creates a lack of representation in programming, and that’s even without digging around for the data on race and education rates.

Establishment of Binary Question

As someone new to Computer Science and coding, a question that came up during our class session today was why the binary system was decided as the chosen mode of language for computer systems in the first place. I think in learning about this idea, binary can seem like complicating the already well-known and established Base-10 system many are familiar with. 

After doing some reading, the implementation of binary was made because of its simplicity (not necessarily simplicity for us, especially as learners, but computers). With only two choices, versus the 10 in Base-10, systems can run through options much faster than if they had ten choices. When it comes to incorporating simple systems such as an “on” and “off” switch, you could see how a system like binary would work much more efficiently than others. This article describes it in much better detail than I can. 

As for the history of binary, a German mathematician called Gottfried Leibniz invented it in the late 1600s and noted, “These operations are so easy that we shall never have to guess or apply trial and error, as we must do in ordinary division.” See here for more about the history of binary and Leibniz. So, since computers were mainly used as calculators when first invented, it made sense to use binary for its ease of calculating values, and it has managed to prevail over others because of this ease. 

 

 



Welcome to our conversation

Writing is habit of attention and practice of thought. I find it to be an invaluable tool for learning and creativity. For this reason, informal writing is a key component of engagement in this course. Part of this informal writing is blogging, reading, and commenting on others’ posts. These forms provide the opportunity to practice concise writing for an engaged audience.

Blog posts are 200-300 words, written for an audience of our class and posted in public.

At the start of the term, you will be assigned to blogging group A or B. These groups will alternate posting and commenting from week to week.

Blog posts are reflections on our discussion-focused class meetings: what struck you as fascinating, puzzling, or connected to other ideas? What questions do you now have? What do you want to know more about? Response posts are an opportunity to practice returning to an idea to develop it further. These posts should not summarize discussion. They should develop your own insight into the ideas we talked about. Posts are due by 5pm the Wednesday after discussion.

Comments should respond to a specific point raised by your colleague in the blog post. You do not need to comment on every post. You need one thoughtful comment to one post. If you see that some posts have several comments and others have none, consider commenting on a post that doesn’t have any yet. Comments are an opportunity to practice reading and writing as engaged conversation, and besides that, it is fun to know that other people are reading what you wrote. Comments are due by 5pm the Friday following the discussion.

Reading summaries are more than 300 words and convey the significance of the reading to which you were assigned. This should be in grammatically complete sentences for the most part, and direct quotation can be no more than 10% (i.e. 30 words). The title of the post should follow the format Author Last Name, Title of Reading. Due via blog post by 5pm Monday, categorized as “reading.” Must include a description of how labor was divided.