1. Introduction and Output
1.1. What Will I Learn?
The short version
How to write computer programs
How to write programs to solve problems
A little bit of how computers work
A little bit about what on earth computer science is
The long version:
Activity
Where have you encountered computer programs before?
Can anyone name an area of Science where they think having computer programming skill would be a bad thing? How about Social Science? Humanities? Art? Talk with your neighbours.
1.2. What Prerequisites Do I Need?
Curiosity
1.3. Why Are The Course Notes A Website?
You’re going to learn to write programs in Python
Most Python documentation is made with something called Sphinx
These course notes are made with Sphinx
The idea: get used to reading and learning from something in this format
1.4. How Will This Course Work?
This course is going to be run somewhat differently from other courses you may have experienced at university
I have a number of activities throughout the topics that we will take time to work on
They also help with breaking up the monotony of listening to a lecture for an hour straight
At the end of each topic there are linked suggested readings you should work through to get practice
The only way to learn this stuff is through practice
You can watch every YouTube video on how to play piano that exists, but you still won’t know how to play piano unless you practice
Activity
Have a chat with the people sitting around you:
What are their majors?
Why did you come to StFX?
Why are they taking this course?
What do you hope to learn?
How do you think you will use what you learn in the future?
1.5. What Should I Bring To Lecture
Curiosity
Readiness to do stuff, rather than just listen
A laptop and/or pen and paper
Taking notes is still important even though the content is online
If you can bring a laptop, I strongly recommend it as there will be opportunity for you to program during activities
Note
Despite having these course notes available, handwritten notes during lecture are strongly recommended. Typed notes are better than nothing, but studies consistently show handwritten notes are more effective for retention and understanding.
1.6. Is This Course Easy?
The quick answer is, it depends…
Quick Activity
Who here knows how to use a hammer?
Who knows how to use a screwdriver?
Who knows how to use a saw?
…
…
Who here knows how to build a house?
Each of the things you will learn are perhaps simple on their own, but using them together to achieve something is challenging
These topics are likely going to be different from what you are used to
The type of thinking required for this course is something students may not have encountered before
The best way to set yourself up for success is
Practice
Read
Stay on top of the content
1.7. Is This Course Hard?
No
It’s entirely doable if you put in the effort
The course is dense and cumulative — staying on top of the content is important
The good news is, you get to make mistakes
In fact, expect to make a lot of mistakes
You get to see if what you did works or not
Much of this course will be you beating your head against your keyboard, so to speak, until you get it right
Not many courses or disciplines give you this luxury
I really can’t stress this enough
Most of the time when you’re working on the course material you will be getting things wrong
The majority of programming is actually debugging
Getting it wrong is normal and expected
This is a good thing
This is not because you’re new
This is the nature of programming, even for experienced programmers
1.8. I Need Help!
Knowing the challenges students face, we have provided many resources to help you succeed
1.8.1. Google?
When a programmer isn’t debugging, they’re Googling their problems
This is so common that it’s a meme
I am going to tell you to “Google It” very often in this course
This is intentional
Independent learning is one of the most important things you will learn
Further, it will be your go to tool when you’re programming in the future
1.8.2. What about Generative AI?
The use of AI is prohibited in this course
When talking about Googling, I am not talking about generative AI
The friction of searching for a solution is an important part in learning
Formulate the right question
Reading various answers to similar problems
Piecing together a solution
Hacking at it until it works
AI is a great tool for programmers
AI is not a great tool for those learning to program
To learn these concepts, students need to grind out the solutions on their own
Knowing when AI is right/wrong/hallucinating requires a deep understanding of these core ideas
You cannot develop the necessary expertise by offloading the learning to the tool
Even using AI in good faith as a mechanism to learn when stuck is a recipe for disaster
Having answers, even if well explained, eliminates the struggle required to truly understand
1.9. Can I Write A Program Now?
If you have gone through get set up for CSCI 161, then yes
Go to Google Colab and make your “Hello, world!” program
“Hello, world!” is traditionally the first program one writes in a new language
1print("Hello, world!")
You’re now officially a computer programmer
Warning
If not already done, turn off the generative AI features within Google Colab, as described in getting set.