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!

../../_images/life_before_google_comic.png
  • 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

  • Get used to “Googling it”

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?

1print("Hello, world!")
../../_images/hello_world_colab.png
  • 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.

1.10. For Next Topic