cs-self-learning/docs/编程入门/Functional/CS2500en.md
2024-12-06 19:52:58 -05:00

28 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CS2500: Fundamentals of Computer Science 1
### Descriptions
- **Offered by:** Northeastern University
- **Prerequisites:** High school arithmetic and algebra
- **Programming Languages:** Racket
- **Difficulty:** 🌟🌟🌟
- **Class Hour:** Approx. 60 hours
### Evaluation for course: A Modern Approach to Systematic Program Design
If the best course for introducing structured program design is SICP, then CS2500 is its modern counterpart. The course, also known as "Fundies 1", is inherently different from most other Lisp or Racket programming materials found online. CS2500 does not require programming experience and is suitable for both professional and non-professional learners.
CS2500 introduces students to functional programming through a systematic, design-oriented approach, emphasizing correctness, efficiency, and elegance. Blending theory with practical applications, it covers recursion, data structures, algorithms, and test-driven development. The design recipes help students build progressively complex, maintainable programs.
Aligned with *[How to Design Programs](https://htdp.org/2022-8-7/Book/part_prologue.html)*, it promotes program design as a core skill akin to math or language. Instructors **Arjun Guha** and **Nate Derbinsky** deliver accessible lessons for beginners, building programming skills through structured, practical exercises. This course advocates that *everyone can design programs* and that the act of design offers satisfaction and creativity. Similar to learning mathematics or language, CS2500 teaches universal problem-solving skills that are applicable across various fields.
### A Brief History of CS2500
CS2500 is an integral part of Northeasterns computer science curriculum and has evolved from the foundations laid by **MITs Structure and Interpretation of Computer Programs (SICP)**. The course draws heavily on *[How to Design Programs](https://htdp.org/2022-8-7/Book/part_prologue.html)* by **Matthias Felleisen**, systematically teaching program design from the ground up. Over the years, CS2500 has been continually refined to remain relevant with modern practices in software engineering, focusing on program correctness, maintainability, and scalability.
This philosophy resonates with **Realm of Racket**, a beginner-friendly book that captures the uniqueness of learning Racket. The book, written "by freshmen, for freshmen," follows Chad as he embarks on his journey to discover the meaning of life and programming through Racket, highlighting the creative and powerful nature of this unique programming language.
### Course Resources
- **Course Website:** [Fundamentals of Computer Science 1 - Fall 2023](https://pages.github.khoury.northeastern.edu/2500/2023F/)
- **Recordings:** [Course Videos](https://www.ccs.neu.edu/home/nderbinsky/fundies1/)
- **Textbook:** *[How to Design Programs](https://htdp.org/2022-8-7/Book/part_prologue.html)* by **Matthias Felleisen**
- **Assignments:** Weekly assignments are provided in the course and based on concepts from the textbook. They range in difficulty, and encourage mastery of design recipes.