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

cstart #285

Open
3 tasks done
E1PsyCongroo opened this issue Oct 21, 2024 · 0 comments
Open
3 tasks done

cstart #285

E1PsyCongroo opened this issue Oct 21, 2024 · 0 comments
Labels

Comments

@E1PsyCongroo
Copy link

你是否已经阅读并同意《Datawhale开源项目指南》?

你是否已经阅读并同意《Datawhale开源项目行为准则》?

项目简介

NekoBytes-TheMissing

NekoBytes-TheMissing 计算机入门导引!这是我们的编程入门系列中的第一门课程。NekoBytes-TheMissing将让您熟悉 C 编程语言,介绍计算机科学与技术中的常见主题,包括抽象、算法、体系结构、人工智能、嵌入式开发、计算机系统和编程语言,并练习应用工具来解决复杂问题。

课程主题

我们计划的课程将按大致顺序涵盖以下主题:

  • 提问的艺术
  • C 语言基本知识
  • Unix CLI 介绍
  • 计算机程序的硬件视角
  • 抽象
  • 算法概论
  • 指针、数组与内存动态分配
  • C 语言开发工具
  • 程序的预处理、编译、链接
  • 人工智能、机器学习与深度学习
  • 嵌入式开发
  • Unix 系统编程
  • 编程语言

学习目标

完成 NekoBytes-CS-001 后,我们希望你能够实现以下学习目标:

  • 能够使用编程来解决在课外遇到的现实问题。
  • 认识并理解计算机科学中常见的抽象概念。
  • 可以识别日常技术中存在的编程概念,了解计算机如何处理和组织信息。
  • 可以使用类 Unix 操作系统完成日常任务。

立项理由

发起“NekoBytes-TheMissing”的理由在于,国内高校大都使用C语言作为第一门教授的语言,但大多是死板的知识灌输,导致导论课脱离了编程语言成了空中楼阁(尽管凭心而论,C语言确实不适合作为导论语言),导致当前的计算机科学教育普遍存在入门门槛高、内容碎片化的问题,尤其对于没有编程经验的人群而言,很难系统性地掌握基本的编程技能和计算机科学概念。通过设计一个循序渐进的课程,从最基本的 C 语言开始,结合计算机科学中的核心主题和实用工具,“NekoBytes-TheMissing”旨在填补这一空白,帮助初学者在一个结构化的学习路径上建立扎实的编程基础,并逐步深入理解计算机技术的工作原理和应用场景。

项目受众

  • 计算机科学入门者:希望自学或准备进入计算机科学领域的初学者,没有编程基础或仅有少量编程经验的人群。
  • 跨领域转行者:其他领域的专业人员,希望通过学习编程和计算机科学知识转入技术相关岗位。
  • 学生:在校大学生或中学生,希望拓宽视野,学习计算机编程和技术基础。
  • 自学编程爱好者:对计算机科学和编程有浓厚兴趣的个人,想通过系统的学习来提升自己。

项目亮点

类似项目

MIT The Missing Semester of Your CS Education
Harvard CS50
计算机速成课

项目亮点

  • 全链条学习路径:从基础的编程知识到复杂的计算机科学概念,全程设计了一条完整的学习路径。相比其他仅涉及某一具体领域或工具的项目,NekoBytes-TheMissing 提供了从基础到应用的全面学习体验。
  • 实战导向:课程内容结合大量的实战练习和项目,以问题解决为导向,让学习者更快地掌握技能,并能够应用到现实场景中。
  • 覆盖面广:不仅教授编程语言,还介绍操作系统、计算机硬件、算法、人工智能等主题,为学员提供计算机技术的全局视角。
  • 适应性强:课程设计面向不同层次的学习者,无论是零基础入门者,还是想进一步巩固计算机基础的人,都能从课程中受益。

项目规划

目录

Lectures 编写任务书

课程幻灯片,最终格式确保导出为 PDF , 开发分支需要上传可供编辑修改的版本

Week1

Week2

Week3

  • 展开介绍 C 语言基础语法:
    • 变量, 数组, 字符串
    • 控制流(for, while, do-while)
    • 函数
    • 预处理器与标准库
    • 指针
  • C 程序的硬件视角,继续理解抽象:
    • 变量, 指针, 数组, 字符串, 函数, 代码在内存中存储
    • 程序指针的改变
    • 操作系统提供系统库的 ABI
  • 参考资料:

Week4

  • 回顾上周的 C 语言基本语法
  • 程序=算法+数据结构
  • 算法概论
  • 函数与递归,循环与分治
  • 经典的递归与分治算法问题

Week5

  • C 语言核心语法详解: 指针、结构体、动态分配
  • C 语言的内存分配与动态管理
  • 数据结构——链表,链表的 C 语言实现

Week6

  • git 简要介绍
  • C 语言复习回顾
  • 介绍 C 语言必学开发工具: GNU Make, Valgrind, GDB, GCC
  • 程序的预处理、编译、链接
  • 多文件编程的正确姿势, C 语言变量函数声明、作用域、生存期、存储期与链接
  • 参考资料:

Week7

  • C 语言其他语法:
    • 字符串库
    • 联合体
    • 枚举
    • 变参数函数(简单介绍)
    • 函数指针与系统编程——信号处理(简单介绍)
    • 位域(简单介绍)
  • 参考资料:

Week8

  • C 语言 I/O 操作
    • I/O 标准库
    • 输入/输出重定向
    • Linux 管道操作
  • 机器学习的一般方法
    • 详解线性回归预测
  • 深度学习与神经网络

Week9

  • C 语言与嵌入式编程
  • C 语言与系统编程
  • C 语言总结

Week10

  • 编程语言
  • 函数式编程思想
  • 解释器

WEEK11

  • 总结

Labs 编写任务书

Labs

  • 课程实验,应保证实验框架注释充分明确,为每个实验配备对应的README文档指引,提供基本的单元测试
  • 本项目实验环境均为 Ubuntu 22.04,请贡献者确保课程实验能在该环境下正确进行
  • 目录下实验应确保为 Linux 环境下的 tar.gz 压缩格式。命名格式如下: Lab0.tar.gz, Lab1.tar.gz, Lab2.tar.gz, ...
  • 实验预计耗时 2-3h 为宜
  • 十分建议参考笨办法学C中的实验

Solutions

  • 项目实验配套解决方案,同样为 tar.gz 压缩格式。命名格式如下: Lab0-Sol.tar.gz, Lab1-Sol.tar.gz, ...
  • 如有需要,可附文档文字说明

Week0

Week1

  • Git 实验参考CS61C Lab0
  • C 实验提供简单的代码填空,GCC 编译练习

Week2

  • C 语言基础
  • 添加注释,文档说明
  • 提供标准 Solution

Week3

  • 体验嵌入式编程

Week4

  • 经典的递归与分治算法问题
  • ACMer 比较懂

Week5

Week6

Week7

  • 一个简易 Shell 的实现

Week8

  • 读取数据集的线性回归预测
  • Linux系统文件读取任务,例如: ps命令的简易实现

Week9

  • 待定

Week10

  • 简易计算器

Projects 编写任务书

  • 课程大作业,应配备完善的单元测试,README 文档。
  • 本项目实验环境均为 Ubuntu 22.04,请贡献者确保课程实验能在该环境下正确进行
  • 目录下作业应确保为 Linux 环境下的 tar.gz 压缩格式。命名格式如下: Proj0.tar.gz, Proj1.tar.gz, ...
  • 不必提供对应的解决方案。
  • 大作业预计耗时 5-8h 为宜

Proj1

  • MyMalloc, 参考 CSAPP 与 K&R The C Programming Language
  • MyMalloc调优(选做)

Proj2

  • 贪吃蛇,参考CS61C

Proj3

  • 简易神经网络实现分类任务

Proj4

  • LSIP 解释器

完成日期

详见课程主页

课程组人员

共计9人,核心人员:

可预见的困难

  • 如何定义零基础
  • 需要编写细致的文档内容,人手可能不够,导致需要慢慢修改文档内容(项目不稳定)

已完成内容

课程正在杭州电子科技大学内作为社团课程开展,同时包含了福州大学和厦门大学的部分受众学生。
课程主页: https://hdu-cs.wiki/2.%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9D%97/2.1%20NekoBytes-TheMissing/2.1%20NekoBytes-TheMissing.html
项目仓库: https://github.com/E1PsyCongroo/NekoBytes-TheMissing
项目Gtithub Page(用于存储资源): https://e1psycongroo.github.io/NekoBytes-TheMissing/

项目负责人GitHub主页链接

https://github.com/E1PsyCongroo

项目负责人联系方式

GMAIL:elpsycongroo242@gmail.com
QQ: 2296510380

备注:发起立项申请后DOPMC成员将会在7天内给出审核意见并评论在该Issue,若7天内无反对意见则默认立项通过,如有疑问或者需要帮助请联系微信:at-Sm1les

  • 我已知悉上述备注
@Sm1les Sm1les changed the title NekoBytes-TheMissing cstart Oct 30, 2024
@Sm1les Sm1les moved this from 筹划 to 立项 in Datawhale开源项目看板 Oct 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Development

No branches or pull requests

2 participants