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. There Are Two Sections?

  • Yes

  • Section 11 is taught by Dr. Hughes

  • Section 12 is taught by Dr. Delamer

1.5. How Will This Class Work?

  • This class 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 class?

  • What do you hope to learn?

  • How do you think you will use what you learn in the future?

1.6. What Should I Bring To Class

  • 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

1.7. Is This Class 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 really are going to be shockingly different from what you are probably used to

    • Very few classes can prepare you for the way of thinking that will be required for this class

  • Unfortunately, intro to computer science classes do often have an unusually high fail rate

  • The best way to set yourself up for success is

    • Practice

    • Read

    • Stay on top of the content

1.8. So I Should Be Terrified?

  • No

  • It’s entirely doable if you put in the effort

  • Warning though — the class is dense and very accumulative, do not fall behind

  • 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

  • Most of this class will be you beating your head against your keyboard until you get it right

  • Not many classes 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

    • Get used to making mistakes

      • This is a good thing

      • This is normal

1.9. I Need Help!

../../_images/beforeGoogle.jpg
  • Knowing the challenges students face, we have provided many resources to help you succeed

1.9.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.10. Can I Write A Program Now?

1print("Hello, world!")
../../_images/HelloWorldColab.png
  • You’re now officially a computer programmer

1.11. For Next Class