DEV Community

Cover image for Build Computer Science Learning Project referenced CS2013, J17-CS, and Course of Computer Science and Engineering in MIT
Ryuta
Ryuta

Posted on

Build Computer Science Learning Project referenced CS2013, J17-CS, and Course of Computer Science and Engineering in MIT

Summary

Build learning project for computer science to improve my skills for web development.

I referenced the curriculum that J17-CS which made by Information Processing Society of Japan, CS2013 made by Association for Computing Machinery, and Course of Computer Science and Engineering in MIT.

For this learning, I built the plan that 'Why learn it', 'What learn it', and 'How learn it'.

In 2024, I plan to focus intensively on this project.

Why learn it

To enhance technical knowledge and skills, as well as to accelerate the efficient and effective acquisition of technical expertise in the rapidly advancing software industry.

What learn it

Referenced by some effective curriculum which is J17-CS, CS2013, and curriculum of MIT, we learn the body of knowledge of computer science.

In CS2013, Computer Science is classified 18 knowledge area and categorize Tier-1 and Tier-2.

In this learning project, we use as a reference it.

How learn it

*This project target is Acquire the foundation of computer science's body of knowledge.
*

So, I Built my curriculum which benchmark of J17-CS, CS2013, and MIT curriculum.

The following the list is that all learning area and resourcing to use to learn.

Software Development Fundamentals(SDF)

Overview

Learning the fundamentals of technique and base concept for software development.
For the beginner who learning computer science, we show the acquiring concept and skills in first years. It has the course that architecture and analysis of algorithm, base concept of programming, data structure, and development ways and tools for software development fundamentals.

Purpose

Learning about software development fundamentals widely, we build the fundamentals to learn Programming Languages area, Algorithms and Complexity area, and Software Engineering area.

Goal

I can explain to non-developers the roles and overviews of concepts in software development such as algorithms, data structures, and the foundational knowledge of software development.

Resource

Related course by MIT(presumption)

  • Introduction to Computer Science Programming in Python(6.100A)
  • Fundamentals of Programming(6.1010)
  • Software Construction(6.1020)

Discrete Structures(DS)

Overview

Discrete Structures is the mathematical fundamentals of informatics.
Thorough this area, we acquire the fundamentals knowledge of mathematical principles necessary for describing and discussing things, not only in theoretical areas but also in many other applied fields.

Purpose

To acquire the level of mathematical knowledge required to understand computer science.

Goal

As a software developer and a computer science learner, we can explain about discrete structure.

Resource

Related course by MIT(presumption)

  • Mathematics for Computer Science(6.1200[J])

Algorithms and Complexity(AL)

Overview

Introduction to General Algorithms, Algorithm Paradigms, and Data Structures.

Purpose

To understand the theory and application of algorithms for solving complex problems more efficiently, as well as the theory and practical methods for determining computational complexity to derive efficient solutions even within limited resources, and to be able to incorporate them into practical work.

Goal

To grasp the computational complexity of adopted algorithms in practical scenarios, such as in real-world projects or on platforms like LeetCode, and be capable of applying the most efficient algorithm from among multiple solutions to solve problems effectively.

Resource

Related course by MIT(presumption)

  • Introduction to Algorithms(6.1210)
  • Design and Analysis of Algorithms(6.1220[J])1

Systems Fundamentals(SF)

Overview

Extracting fundamental concepts that commonly appear across various fields of computer science and forming a concise and unified understanding that spans the entire field of computer science.

Purpose

To delve deeper into computer science, it's important to grasp and understand the foundational knowledge that should be covered.

Goal

Having a sufficient understanding to explain the overview of the 12 topics covered in 'Introduction to Computer Science' to someone without prior knowledge in the field.

Resource

Related course by MIT(presumption)

  • None?

Programming Languages(PL)

Overview

To be able to understand programming models that vary from one language to another and the design principles underlying them.

Also, by studying language processing systems, static analysis of programs, memory management, and more, one can learn how to effectively use each language and understand their limitations.

Purpose

To understand the characteristics of each programming language and the internal mechanisms of the languages themselves. This enables more efficient programming implementations and the ability to choose the optimal technology without being bound to a specific language.

Goal

To implement interpreters and compilers, and explain the basic concepts and mechanisms of language processing systems, static analysis, recursion, and other related topics to a third party.

Resource

Related course by MIT(presumption)

Software Engineering(SE)

Overview

Learning about the software development lifecycle and acquiring the knowledge and techniques to develop high-quality software, as well as the ability to evaluate the quality of both the technical deliverables and the processes involved in software development.

This includes development processes, project management, various tools, software design and construction (coding standards, secure coding practices, exception handling, etc.).

Purpose

To understand the theories and methodologies for maintaining high quality and efficient development in software that undergoes continuous development.

Goal

To understand what efforts should be made to continuously deliver high-quality software, to comprehend what needs to be done to realize these efforts, and to establish mechanisms for the continuous delivery of high-quality software in practice. Additionally, as an output, break down each effort into documents that development team members can understand, outlining 'why it should be done' and 'how it should be done.

Resource

Related course by MIT(presumption)

  • Fundamentals of Programming(6.1010)?

Parallel and Distributed Computing(PD)

Overview

Building on an understanding of fundamental concepts in various areas such as concurrency, parallel execution, memory consistency, communication latency, and others, acquire the knowledge and skills required to efficiently perform large-scale computation and data processing (improving speed), as well as the technology to create secure and fault-tolerant systems.

Purpose

By acquiring skills in parallel and distributed processing techniques, one can learn how to efficiently perform large-scale computation and data processing, ultimately leading to improved performance in application implementations through efficient processing.

Goal

In the project, which we are working on, we are reviewing the design and implementation to achieve more efficient processing and improve performance.

Resource

Related course by MIT(presumption)

Operating Systems(OS)

Overview

Design and implementation of an operating system that is not specific to a particular OS, including the fundamentals of system programming.

Covering the overview and principles of OS, as well as topics ranging from design and implementation to virtual machines and more.

Purpose

The operating system is the core of a computer system. Understanding the OS deepens one's comprehension of the entire computer system, leading to efficient and secure software development through processes such as multitasking and memory management.

Goal

By implementing a minimal OS, one can acquire knowledge that goes beyond conceptual understanding and delve into the fundamental features and mechanisms of an operating system, enabling the ability to explain them at a detailed level.

Resource

Related course by MIT(presumption)

Networking and Communication(NC)

Overview

To understand the fundamentals of networking, from basic concepts to general knowledge about communication as a whole.

Purpose

By understanding networking and communication, one can learn the theory and implementation of data transfer mechanisms and inter-system coordination. This enables the ability to design appropriate and efficient networks, leading to stable and efficient system operations.

Goal

To understand communication protocols and the structure of networks, and to be able to explain the roles of various elements in the information flowing through networks.

To gain an understanding of various network structures and mechanisms from a networking perspective regarding the infrastructure of the projects you are involved in, and to be able to explain these concepts to non-engineers.

Resource

Related course by MIT(presumption)

  • Computer Systems Engineering(6.1800)

Information Assurance and Security(IAS)

Overview

To understand the fundamental principles of information security, various threats, and risks, and to learn about the mechanisms for protection and defense against them.

Purpose

By understanding how to prevent threats to a system in advance and how to defend a system from those threats, one can learn how to build secure systems and how they may be attacked.

Goal

To be able to diagnose potential security threats in projects you are involved in and, if problems exist, to assess and determine the appropriate methods for addressing them from a security perspective.

Resource

Related course by MIT(presumption)

Information Management(IM)

Overview

To understand what information is, starting with databases, and to acquire the technical knowledge and theories necessary for effectively collecting, organizing, storing, and retrieving information, and for utilizing that information for business, organizational decision-making, strategy formulation, and operational improvement.

Purpose

To learn about appropriate data management and operations based on information, to construct conceptual and physical data models, and to be able to implement the desired design by determining suitable methodologies and technologies.

Goal

To understand the concepts used internally in database systems and storage engines, and to be able to perform appropriate data modeling for the characteristics of each database system.

Resource

Related course by MIT(presumption)

Architecture and Organization(AR)

Overview

Building on a foundation of Systems Fundamentals (SF) knowledge, acquire the understanding of interfaces for higher-level hardware construction and advanced software layers with higher abstraction levels. Gain the ability to understand and apply the characteristics of various components of computer systems and their interactions with the surrounding environment.

Purpose

To understand the architecture and configuration of computers on which programs run, and to become capable of developing software that maximizes performance.

Goal

By assembling computer components such as hardware, software, compilers, and operating systems one by one and implementing them until an application runs, one can understand the theory and implementation of how computers operate.

Resource

Related course by MIT(presumption)

  • Computer Systems Engineering(6.1800)
  • Computation Structures(6.1910)

Platform-based Development(PBD)

  • TBD

Top comments (0)