Compare commits

...

18 Commits

Author SHA1 Message Date
Pulkit Krishna ddbeef4a8f
Merge b0340479f7 into 5976f5ba97 2024-04-01 12:13:52 +00:00
Pulkit Krishna b0340479f7
Add info about eabling automatic parentheses, square brackets and quotes 2024-04-01 17:43:49 +05:30
Pulkit Krishna d7525f29c9
Add files via upload 2024-04-01 17:39:25 +05:30
Pulkit Krishna 5976f5ba97
Add Intro CS coursepage and replace the OCW version with an archived version on Edx (#1224)
* Create README.md

* Add link to Intro CS course page

* Update README.md
2024-03-31 22:37:56 -04:00
Pulkit Krishna ba2b531013
Update README.md 2024-03-26 10:33:38 +05:30
Pulkit Krishna 9500b89b03
Delete coursepages/spd/ta-solver-starter.rkt 2024-03-26 10:28:57 +05:30
Pulkit Krishna 98cb2b8016
Delete coursepages/spd/space-invaders-starter.rkt 2024-03-26 10:28:48 +05:30
Pulkit Krishna b6cbf529be
Delete coursepages/spd/htc-simple.zip 2024-03-26 10:28:38 +05:30
Pulkit Krishna 7b546bcf7d
Delete coursepages/spd/HTC2X.zip 2024-03-26 10:28:24 +05:30
Pulkit Krishna b011834e6a
Update README.md 2024-03-22 22:51:31 +05:30
Pulkit Krishna 9d771e0ab6
Update README.md 2024-03-22 19:18:53 +05:30
Pulkit Krishna 3ebec83dac
Update readings.md 2024-03-22 14:19:58 +05:30
Pulkit Krishna 435033e5e6
Update README.md 2024-03-22 14:17:46 +05:30
Pulkit Krishna 5f09d6c738
Update README.md 2024-03-22 14:13:58 +05:30
Pulkit Krishna e302cd61f0
Add files via upload 2024-03-22 13:53:01 +05:30
Pulkit Krishna 81ac5b587c
Update README.md 2024-03-22 13:37:33 +05:30
Pulkit Krishna 9e15516663
Add files via upload 2024-03-22 12:51:14 +05:30
Pulkit Krishna e0a15dae86
Create README.md 2024-03-22 12:42:31 +05:30
7 changed files with 131 additions and 2 deletions

View File

@ -146,7 +146,7 @@ This course will introduce you to the world of computer science. Students who ha
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Introduction to Computer Science and Programming using Python](https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/) ([alternative](https://www.edx.org/course/introduction-to-computer-science-and-programming-7)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
[Introduction to Computer Science and Programming using Python](coursepages/intro-cs/README.md) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
## Core CS
@ -169,7 +169,7 @@ All coursework under Core CS is **required**, unless otherwise indicated.
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Systematic Program Design](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) [(textbook)](https://htdp.org/2023-8-14/Book/index.html) (alternative: [part 1](https://www.edx.org/course/how-to-code-simple-data), [part 2](https://www.edx.org/course/how-to-code-complex-data)) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
[Systematic Program Design](coursepages/spd/README.md) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | Systematic Program Design ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)

View File

@ -0,0 +1,32 @@
# Introduction to Computer Science
This course will introduce you to the world of computer science. Students who have been introduced to programming, either from the courses above or through study elsewhere, should take this course for a flavor of the material to come. If you finish the course wanting more, Computer Science is likely for you!
This course has been developed by MIT and is available from three different places. We recommend you to do it from the archived version on Edx.
> 6.0001 Introduction to Computer Science and Programming in Python is intended for students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems and to help students, regardless of their major, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class uses the Python 3.5 programming language.
**Course Link:** <https://learning.edx.org/course/course-v1:MITx+6.00.1x+2T2018/home>
Alternative Links:
- <https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/>
- <https://www.edx.org/course/introduction-to-computer-science-and-programming-7> (instructor-paced version, runs three times a year)
## Instructions
**Note:** These instructions are for the archived version of the course on Edx, which we recommend. They don't apply to other versions of the course.
- The course does not have a homepage on Edx, but don't worry about it. Open the [link](https://learning.edx.org/course/course-v1:MITx+6.00.1x+2T2018/home) given above, log in (if you are not logged in) and then enroll in the course.
- Work through the course as given in the course overview. Watch the videos, do the finger exercises, and then solve the problem sets.
- You won't be able to submit your responses for the finger exercises, but you can see their answers by clicking on "Show Answer". Check your answers honestly.
- You won't be able to submit the problem sets on their own page. To submit them, go to the "Sandbox" section (It is the last section. You can find it on the course overview). There, you will be able to submit your work and get it graded.
- You don't need to install the full Anaconda distribution to do this course. See the notes section below for more information.
- If you are stuck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: <https://discord.gg/jvchSm9>.
## Notes
- You don't need to install the full anaconda package to do this course. You can just download the Spyder IDE from here: <https://github.com/spyder-ide/spyder/releases/latest>. It comes bundles with python as well as some popular scientific python libraries (all the libraries which this course uses are included), but it is not as large or complex as the full anaconda distribution. You don't need to set up python separately or anything.
- The community has found this resource useful: <https://www.youtube.com/playlist?list=PL4e66Kzl1JCFPVBa7gBzWJF_FDF3KBf-2>
- You won't get any certificate for doing this course. If you really want a certificate, you need to do the [instructor-paced version of this course](https://www.edx.org/course/introduction-to-computer-science-and-programming-7) on Edx. Certificate of an introductory course like this is not very valuable, so unless you are absolutely sure, we recommend you to do the archived version of this course instead.
- If for some reason you want to do the OCW version of the course, you will find many useful notes and fixes of various problems in our [discord server](https://discord.gg/jvchSm9).

96
coursepages/spd/README.md Normal file
View File

@ -0,0 +1,96 @@
# Systematic Program Design
This course has been developed by UBC and is available from Edx. We recommend you to do it from the archived version on Edx.
> This programming course takes a unique approach, as it focuses on learning a systematic programming method rather than a programming language. This practical approach will help you channel your creativity so that you can program well in any language.
**Course Link:** <https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015>
Alternative Links:
- <https://www.edx.org/course/how-to-code-simple-data> (Up to Week 6A)
- <https://www.edx.org/course/how-to-code-complex-data> (Week 6B onwards)
## Instructions
**Note:** These instructions are for the archived version of the course on Edx, which we recommend. They don't apply to other versions of the course.
- The course does not have a homepage on Edx, but don't worry about it. Open the [link](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) given above, log in (if you are not logged in) and then enroll in the course.
- Work through Week 1A to Week 6A as given in the course overview. Watch the videos, do the exercises, and then solve the problems from the problem bank.
- After you complete, Week 6A, do the [space invaders problem](https://github.com/ossu/spd-starters/blob/main/final/space-invaders-starter.rkt). You can find further instructions here: [Space Invaders Instructions](space-invaders-instructions.png). You can watch a sample run of the game [here](https://www.youtube.com/shorts/wUg3psZl7vM).
- Then, work through Week 6B onwards. Watch the videos, do the exercises, and then solve the problems from the problem bank.
- After you complete all the modules in the course, do the [TA solver problem](https://github.com/ossu/spd-starters/blob/main/final/ta-solver-starter.rkt). You will find the instructions in the starter file.
- The problem bank tab has many additional problems. We suggest you to solve all of them to boost your understanding.
- Some links to starter files in the course are no longer working. You can download the starter files from this github repository: <https://github.com/ossu/spd-starters>. You can download a zip file of all the starter files using [this link](https://github.com/ossu/spd-starters/archive/refs/heads/main.zip).
- You won't be able to submit your responses for the exercises, but you can see their answers by clicking on "Show Answer". Check your answers honestly.
- You won't be able to submit the problem bank problems, but they provide sample solutions. You can match your solution with it.
- While there are ways to do this course in other IDEs, we suggest you to use Dr. Racket, as configuring the problem starter files for other IDEs is not worth the effort.
- If you are stuck somewhere, feel free to ask questions. You can join the OSSU chat for this course here:
- Chat for discussions up to Week 6A: <https://discord.gg/RfqAmGJ>
- Chat for discussions from Week 6B onwards: <https://discord.gg/kczJzpm>
## Notes
- Dr. Racket defaults to using the newer notation `#true #false '()`. You can configure Dr. Racket to use the notation used by the course by clicking in menu bar on Language > Choose Language. Then choose the required language (BSL, ISL or other variants). Then click on "Show details" in the bottom left of the window. Then choose `true false empty` in "Constant Style" field. Run your file again to make sure it uses the new configuration.
<img src="change-dr-racket-notation.png" width="600" alt="The language choosing dialog of Dr. Racket" />
- You can enable automatic closing of parentheses, brackets, and quotes. Click on Edit in the Menu Bar > Preferences > Go to Editing Tab > Go to General Editing Sub-tab > Check the "Enable automatic parentheses, square brackets, and quotes" checkbox.
<img src="automatic-parentheses.png" width="600" alt="Enable automatic closing of parentheses" />
## FAQ
### This course is boring. Can I skip it?
**No.** This course may seem boring at first, but we suggest working though it. This is a great course, and it will probably change the way you think. Many students who found this course boring at first became a fan of the course by the time they completed it. Be very careful. The early parts (especially the rules about how evaluation works) plays a huge role in understanding how code works and gets executed for the rest of the course.
### Why is this course taught using BSL? Would it not make more sense to teach it in an industry standard language?
This is an intentional choice, and here's why:
1. Lisp is the lingua franca of computer scientists -- by which we mean, PhD algorithm researchers. There are some good and some merely historical reasons for this, but it's a fact of life, so if you want to read white papers you're going to want to read Lisp. BSL is a good introduction, and frankly once you get over the parenthesis hell and once you know any Lisp you know how to read them all.
2. This is the first computer science course in most people's curricula that isn't centered around teaching you how to use a language. Because the point of computer science isn't to teach you a language. Or to teach you to code. Or to teach you to be a fullstack software engineer. Computer Science is a very narrowly-applied applied math with wide-ranging practical usage. But if you strip away all the qualifying language, it's math. Which means it has certain overarching rules that are completely, totally independent of your implementation language.
This course is built in a throwaway student language, specifically so you don't focus on the language and instead focus on what you're doing with the language. We don't care about public static void main or PEP8 style. We want to see ways to structure a program in any language. So we focus not on the things that make Java unique, and not on the things that make Python unique, and instead focus on the things that make code better.
It might seem rough to learn a new language just to take this course, but BSL frees you from having to worry about style linting or runtime issues or code compartmentalization or compiling or coding environment. It's a gift. Take it. The design patterns are hard enough.
### Why there are different course versions, HTC, SPD? Why do you recommend the archived version?
There are two reasons people do these courses:
- The Knowledge
- The Certificate
OSSU assumes you're in it for the knowledge. You can have that for free. If you're doing it for the knowledge you don't need to submit your homework. You just need to do the homework.
If you want the recognition that you've done the thing, then you're in it for the certificate. You can't have the certificate for free. You have to pay for that.
There's no reason for you to submit homework sets unless you're doing it for the certificate -- If you're doing that, you can't actually get a certificate from the SPD course (because the course is expired) so you're in the wrong place.
If you want a certificate, then you need to take How To Code and you need to pay for it.
But you don't need to pay for anything in OSSU. We suggest you take SPD because the access to the information is better (because the course is expired) and it's more than sufficient for obtaining the knowledge.
TL;DR:
If you're in it for the knowledge, take SPD -- it's free but inactive
If you're in it for the certificate, take and pay for How To Code -- it's still an active course
### Can I do this course is another programming language?
This course has really integrated with the programming languages it uses. We suggest you to use the language specified by the course. While, the concepts you learn from this course are applicable anywhere, trying to do the course with another language is not really sensible, and would just lead to wastage of time.
### Can I use another IDE? I don't like Dr. Racket.
The programs in this course embed pictures and rich-text blocks in the code, which means, the files cannot be opened by other IDEs. While it is possible to prepare the starter files for use with other IDEs, you need Dr. Racket for that, and the time needed to do that can be better utilized in learning the concepts taught by the course.
### How do I test functions which are supposed to output random values?
You can use `check-random` to test those functions. You can [learn more about it here](https://docs.racket-lang.org/htdp-langs/beginner-abbr.html#(form._((lib._lang%2Fhtdp-beginner-abbr..rkt)._check-random))). It is needed for the Space Invaders project.
## Credits
The problem starter files and the space invaders instructions were taken from the course ["Systematic Program Design" on Edx](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015), licensed under [CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/) license.

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

View File

@ -25,6 +25,7 @@ Name | Author(s)
[Programming and Programming Languages](https://papl.cs.brown.edu/2018/) | Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz
[Competitive Programming](https://cpbook.net/) | Steven Halim, Felix Halim
[Introduction to computing in Java](https://introcs.cs.princeton.edu/java/home/) | Robert Sedgewick, Kevin Wayne
[How to Design Programs, Second Edition](https://htdp.org/2023-8-14/Book/index.html) | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
## Math