Skip to content

cstart #285

@E1PsyCongroo

Description

@E1PsyCongroo

你是否已经阅读并同意《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:[email protected]
QQ: 2296510380

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

  • 我已知悉上述备注

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions