What Is Covered in the Software Engineering Category of CS-Self-Learning?

The Software Engineering category in the cs-self-learning repository curates three university-level courses—UC Berkeley CS169, MIT 6.031, and CMU 17-803—covering agile SaaS development, software construction in Java, and empirical research methods, all organized under docs/软件工程/ with bilingual documentation.

The PKUFlyingPig/cs-self-learning repository provides a comprehensive roadmap for computer science self-study. Within this collection, the Software Engineering category serves as a dedicated hub for mastering industrial-grade development practices through curated university coursework. This category organizes resources for three distinct courses, each targeting a different facet of software engineering education.

Core Courses in the Software Engineering Category

The repository's docs/软件工程/ directory contains detailed guides for the following three courses:

UC Berkeley CS169 – Software Engineering

UC Berkeley CS169 focuses on Agile development, SaaS architecture, and rapid prototyping using Ruby on Rails. The course emphasizes practical web development skills with primary languages including Ruby and JavaScript.

Key resources include the textbook Software as a Service (available as PDF), EdX video series, official course websites, and GitHub repositories containing assignments. According to the repository structure, this course is documented in both docs/软件工程/CS169.md (Chinese) and docs/软件工程/CS169.en.md (English), with a difficulty rating of ★★★★★.

MIT 6.031 – Software Construction

MIT 6.031 teaches the fundamentals of writing correct, readable, and change-ready code. The curriculum covers specifications, testing, concurrency, and design patterns using Java as the primary implementation language.

Students access course notes, multiple semester websites, and a GitHub collection of assignment scaffolds and solutions. The documentation for this course resides in docs/软件工程/6031.md and docs/软件工程/6031.en.md, also rated at ★★★★★ difficulty.

CMU 17-803 – Empirical Methods

CMU 17-803 diverges from pure coding to explore quantitative and qualitative research methods for software engineering. Topics include data mining of OSS repositories, statistical modeling, and social-network analysis, making it largely language-agnostic with a focus on data analysis.

Resources comprise lecture videos, research-paper reading lists, and course material repositories. This course is cataloged in docs/软件工程/17803.md (Chinese) and potentially docs/软件工程/17803.en.md (English), carrying a ★★★★ difficulty rating.

Standardized Documentation Structure

All three markdown files in the Software Engineering category share a consistent four-section structure that facilitates easy navigation and contribution:

  1. Course Introduction (课程简介) – University affiliation, prerequisites, programming language, difficulty level, and estimated study time.
  2. Pedagogical Focus – A concise narrative explaining learning goals, often quoted directly from the syllabus.
  3. Resource List (课程资源) – Links to official course sites, video recordings, textbooks, and supplemental materials.
  4. Resource Aggregation (资源汇总) – A pointer to the author's personal GitHub repository containing all artifacts and implementations used while studying the course.

This architectural pattern enables contributors to add new courses by simply creating a new markdown file under docs/软件工程/ following the same headings.

Automating Course Metadata Extraction

You can programmatically parse the Software Engineering category files to extract structured metadata. The following Python script processes all markdown files in the directory and prints a formatted table:

import pathlib
import re

def parse_md(path):
    text = path.read_text(encoding='utf‑8')
    meta = {}
    meta['title'] = re.search(r'^# (.+)', text, re.M).group(1)

    meta['university'] = re.search(r'所属大学:(.+)', text).group(1).strip()
    meta['language'] = re.search(r'编程语言:(.+)', text).group(1).strip()
    meta['difficulty'] = re.search(r'课程难度:(.+)', text).group(1).strip()
    meta['hours'] = re.search(r'预计学时:(.+?) 小时', text).group(1).strip()
    return meta

root = pathlib.Path('docs/软件工程')
for md in root.glob('*.md'):
    data = parse_md(md)
    print(f"| {data['title']} | {data['university']} | {data['language']} | {data['difficulty']} | {data['hours']}h |")

Running this script against the repository generates a synchronized table of courses, keeping documentation in sync with the source files.

Contributing New Courses to the Software Engineering Category

To maintain consistency in the Software Engineering category, new course entries should follow this markdown skeleton:


# <Course Title>

## 课程简介

- 所属大学:<University>
- 先修要求:<Prerequisites>
- 编程语言:<Languages>
- 课程难度:🌟🌟🌟🌟
- 预计学时:<Hours> 小时

## 课程资源

- 课程网站:<Course website URL>
- 课程视频:<Video playlist URL>
- 课程教材:<Textbook or notes URL>
- 课程作业:<Assignment repository URL>

## 资源汇总

@<GitHubUser> 在学习这门课中用到的所有资源和作业实现都汇总在 [<Repo name> - GitHub](<Repo URL>) 中。

This template ensures that all entries in docs/软件工程/ maintain the repository's high standards for bilingual, structured learning resources.

Summary

  • The Software Engineering category covers three distinct university courses: UC Berkeley CS169 (Agile/SaaS), MIT 6.031 (Software Construction), and CMU 17-803 (Empirical Methods).
  • All documentation is stored in docs/软件工程/ with bilingual support via .md (Chinese) and .en.md (English) file pairs.
  • Each course entry follows a standardized four-section template: Course Introduction, Pedagogical Focus, Resource List, and Resource Aggregation.
  • The repository provides executable Python examples for parsing course metadata and skeleton templates for contributing new courses.

Frequently Asked Questions

The category covers Ruby and JavaScript for UC Berkeley CS169, Java for MIT 6.031, and language-agnostic data analysis tools for CMU 17-803. This diversity allows learners to study both web development frameworks and systems programming concepts.

How does the repository indicate course difficulty?

Each course file in docs/软件工程/ includes a difficulty rating within the 课程简介 section using a star system (★). Both CS169 and 6.031 rate ★★★★★ (five stars), while 17803 rates ★★★★ (four stars), helping learners gauge prerequisite requirements before enrollment.

Can I add a new software engineering course to this repository?

Yes. Contributors can create a new markdown file under docs/软件工程/ following the established four-section structure. The repository accepts both Chinese and English versions (.md and .en.md respectively) to maintain bilingual accessibility for international learners.

Where can I find the author's personal implementations of these courses?

Each course guide in the Software Engineering category concludes with a 资源汇总 section containing a direct link to the author's personal GitHub repository. These repositories aggregate all assignments, notes, and supplemental materials used during the learning process.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →