Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

πŸ§‘β€πŸŽ“ How to code: Simple Data (EdX) #36

Open
badlydrawnrob opened this issue Jun 25, 2024 · 0 comments
Open

πŸ§‘β€πŸŽ“ How to code: Simple Data (EdX) #36

badlydrawnrob opened this issue Jun 25, 2024 · 0 comments

Comments

@badlydrawnrob
Copy link
Owner

badlydrawnrob commented Jun 25, 2024

Based on Program By Design and HTDP
We're teaching how to think! We don't care about programming.
Here are some tips for doing well in this course.
We suggest you read this every week or so for the
first few weeks of the course, that will help incorporate
these ideas into your work.

(1) Program design is something you learn by doing

If all you do is watch the videos and look at the solutions to lecture/practice problems, you will almost certainly fail this course. Instead you should:

  • Watch the videos actively: try having DrRacket open and typing along with the lecture. Just stop the video if you need a moment to catch up.
  • Use the pause button! If you are watching actively, typing along and so on you will need to pause the video periodically.
  • Try to re-work the lecture problems on your own from scratch after every lecture.
  • Do practice problems, working them from scratch before looking at the solution.

(2) In the words of a former student:

It's funny how repetition in actually doing the work leads to it all of a sudden making sense to me. I can't explain it. I don't have a sense of growing understanding. I have confusion, repetition, and suddenly a sense of understanding. It's not coming through watching or reading, though. It comes from replicating what I've watched several times. This has happened repeatedly for me in this class. I start the week with a sense of accomplishment, well being, peace of mind, and confidence from the victory over last week's homework. I am then submerged in doubt, confusion, and erm, terror. (Why not be melodramatic?) Suddenly there is a working epiphany and I have victory again.

(3) Do not worry about making mistakes!

If you make a mistake and get an error message read the error message, use it to identify the problem and then correct it.

(4) If you are unsure whether something works, try it!

For example, the best way to answer a "does it work to do X" question is by trying it.

(5) Take advantage of the discussion forums to ask questions.

...

(6) Stay caught up

Even on the early material which may seem slow/easy but actually isn't – really internalizing it takes time and practice. This material also lays the foundation for the much more complex problems that follow.

(7) When taking notes during a lecture video ...

Focus on recording the design process, not the end solution (which is always available by pausing the video).

(8) It is better to work a bit every day ...

1 hour per day is better than once a week for a large chunk of time (e.g., 5 hours).

(9) Always be able to identify what step of the recipe you are on

If you are working on a design problem and you don't know how to proceed step back and ask yourself questions like:

  • What step of the recipe am I at?
  • What should I be doing at that step?
  • Where should I be looking to figure out what to write?

Try looking up a similar problem that you have already solved to see what you did at the corresponding step.

(10) If you get stuck for more than 5 or 10 minutes on a design problem get help.

Post to the forums and see if someone has a suggestion. Include what step of the recipe you are at in your post!


Beginning Student Language

This page provides an overview of the material for the first module of the course including topics, learning goals, estimate of time required and study tips. Each module of the course will start with a similar page which you can always access from the navigation bar to the left.

In this course we use a specially designed programming language called Beginning Student Language (BSL). The BSL language is small and simple, and you will be able to learn most of it in this first module. Its simplicity has two benefits. First it allows us to spend more time on learning the design method which is the real focus of the course. In addition, because BSL forms the core of nearly every other language you will ever use, learning the design method using BSL will help you adapt the material you learn in this course to other programming languages.

This course is primarily targeted at students who have never programmed before, so for many of you this will be your first programming language. The videos in this module are paced with that in mind. The videos go through not just the language but also the tools we will be using. Please avoid the temptation to skim this material.

For students who have already programmed, this module may seem too easy – but be careful! Be sure to learn this programming language. While this language forms the conceptual core of nearly every programming language you might have used, it is also different in important ways. Take the time to go through this material carefully.

Working through the videos and practice materials for this module should take approximately 5-8 hours of dedicated time to complete.

Learning Goals

  1. Be able to write expressions that operate on primitive data including numbers, strings, images and booleans.
  2. Be able to write constant and function definitions.
  3. Be able to write out the step-by-step evaluation of simple expressions including function calls.
  4. Be able to use the stepper to automatically step through the evaluation of an expression.
  5. Be able to use the Dr Racket help desk to discover new primitives.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant