Stanford Root

Schedule

Stanford Root

Schedule

CS 104

Introduction to Essential Software Systems and Tools

UNITS:3
GRADING:Letter or Credit/No Credit
LEVEL:Undergrad
GER:—

Concepts that are prerequisites to many different CS classes, such as version control, debugging, and basic cryptography and networking, are either left for students to figure out on their own or are taught in "crash course" form on-the-fly during other, unrelated classes. We propose to develop a course that will teach students the skills necessary to be successful computer scientists, such as the command line, source code management and debugging, security and cryptography, containers and virtual machines, and cloud computing. In this course, students will both become proficient with practical tools and develop a deeper, intuitive understanding of the involved software systems and computer science concepts. With this deeper understanding, students can leverage critical thinking skills to intelligently and efficiently configure and troubleshoot software systems, assess the security and efficiency of particular tool usages, and synthesize new automation pipelines that integrate multiple tools. To summarize, instead of having just a cursory understanding of how to use these tools, students will learn how to most effectively use these tools to become proficient programmers and computer scientists. In addition, this course can provide a gentle introduction to potentially challenging computer science concepts (e.g., networking) that become a focus in subsequent courses and also help motivate some of the tool usages they will see later in the degree program.

Syllabus not available for this section

Sections

0 Terms
No sections available.

CS 104: Introduction to Essential Software Systems and Tools

3 units · Letter or Credit/No Credit

Concepts that are prerequisites to many different CS classes, such as version control, debugging, and basic cryptography and networking, are either left for students to figure out on their own or are taught in "crash course" form on-the-fly during other, unrelated classes. We propose to develop a course that will teach students the skills necessary to be successful computer scientists, such as the command line, source code management and debugging, security and cryptography, containers and virtual machines, and cloud computing. In this course, students will both become proficient with practical tools and develop a deeper, intuitive understanding of the involved software systems and computer science concepts. With this deeper understanding, students can leverage critical thinking skills to intelligently and efficiently configure and troubleshoot software systems, assess the security and efficiency of particular tool usages, and synthesize new automation pipelines that integrate multiple tools. To summarize, instead of having just a cursory understanding of how to use these tools, students will learn how to most effectively use these tools to become proficient programmers and computer scientists. In addition, this course can provide a gentle introduction to potentially challenging computer science concepts (e.g., networking) that become a focus in subsequent courses and also help motivate some of the tool usages they will see later in the degree program.

More CS courses

  • CS 88: Computer-Use Agents: Building Computers to Operate Computers
  • CS 99: Functional Programming and Theorem Proving in Lean 4
  • CS 100ACE: Problem-solving Lab for CS106A
  • CS 100BACE: Problem-solving Lab for CS106B
  • CS 103: Mathematical Foundations of Computing
  • CS 103ACE: Mathematical Problem-solving Strategies
  • CS 105: Introduction to Computers
  • CS 106A: Programming Methodology
  • CS 106AX: Programming Methodologies in JavaScript and Python (Accelerated)
  • CS 106B: Programming Abstractions
  • CS 106E: Exploring Computing
  • CS 106EA: Exploring Artificial Intelligence

All CS courses · All departments