Giter Club home page Giter Club logo

missing-semester's Introduction

The Missing Semester of Your CS Education

Build Status Links Status

Website for the The Missing Semester of Your CS Education class!

Contributions are most welcome! If you have edits or new content to add, please open an issue or submit a pull request.

Development

To build and view the site locally, run:

bundle exec jekyll serve -w

If you'd prefer to develop the site in a Docker container (e.g., to avoid having to install Ruby and dependencies on your host machine), run:

docker-compose up --build

Then, navigate to http://localhost:4000 on your host machine to view the website. Jekyll will re-build the website as you make changes to files.

License

All the contents in this course, including the website source code, lecture notes, exercises, and lecture videos are licensed under Attribution-NonCommercial-ShareAlike 4.0 International CC BY-NC-SA 4.0. See here for more information on contributions or translations.

missing-semester's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

missing-semester's Issues

solution for excercises

Hello,

I am following your course and I am stuck at some points. I would like to ask whether the solutions in each chapter exist somewhere?

Security and Cryptography | `sha1sum` doesn't work

Thanks for this great lecture!

In Security and Cryptography lecture, sha1sum was used for demonstration.

But I found shasum worked in my zsh shell instead of sha1sum.

I tried my bash shell where sha1sum also didn't work.

The path of Vim's plugin

In Editors (Vim) course,

why suggest to put plugins in ~/.vim/pack/vendor/start instead of ~/.vim/pack/git-plugins/start(from vimawesome.com) or ~/.vim/bundle? What is the difference between these paths?

And how the vim notice these plugins? Or how does the vim know where to find these plugins?

Desired size of PRs

As I'm reading through the lectures and find typos or mistakes, I'd like to help improve the Missing Semester and let you know about them. How do you prefer contributions?

  • Issues
  • Large-ish PRs (one per lecture)
  • Small PRs (one per mistake)
  • Some other way?

Add common network/DNS tools to debugging?

Thanks for the great content in this series.

In the "Debugging" lecture, it would be useful to add netcat or telnet to the list of tools to use when debugging network issues. As well, listing dig or nslookup and host or getent hosts would be helpful in cases of debugging DNS issues.

A couple of examples where these are used from my experiences as a software engineer:

  • working through issues with firewalls in public cloud or on premise
  • debugging VPN setup issues

Code license?

I'd like to make my own website based off the Missing Semester Jekyll theme. What license is the source code under? I know the content is CC BY-NC-SA.

Thanks!

Enhanced links

Since you guys are using kramdown for markdown files i would suggest a small enhancement:
Add {:target="_blank"} to all links so people don't exit the lecture page while clicking on the link.

Debugging and Profiling | Linter

Thanks for this beneficial lecture!

I found it was tough for newbies like me to install the linter plugin for Vim which was mentioned in the exercise of Debugging and Profiling.

Maybe elaborating on this topic a bit more in future would be helpful, as this feature looks very useful.

Tool and resource suggestions

Some tool and resource suggestions:

Git:

  • tig is really nice as a tool between using git on the command-line and using a GUI. It's especially helpful for visualizing the commit graph of smaller repositories (tig --all) and even has a periodic-refresh feature (refresh-mode=periodic combined with refresh-interval). The latter could be used to show the current commit history, e.g. in a tmux split, while working with the repository. I only recently discovered the auto-refresh feature and thus didn't really use it so far, but the alternative variant having watch git log --graph ... in a tmux split, alongside watch tree .git, was quite nice when explaining Git.
    Caveat: relatively dense keyboard mapping, i.e. simply pressing random keys might not be the best idea ...
  • The Git Parable as background reading
  • Think like (a) Git for a relatively short overview of various topics, including branching and merging

Data wrangling:

  • visidata also is a TUI tool, but looks very helpful for working with tabular data in a terminal and seems to be a tool which is worth having heard of. Unfortunately I cannot say much about its reliability so far since I also discovered it quite recently.
    Lightning talk, website, tutorial
    Caveat: the use of yaml.load() in the stable version may lead to code execution when a malicious YAML file is loaded (issue; also depends on the pyyaml version in use)

Safari in Q&A

I think that the last part of the Q&A undersells the merits of Safari. Firefox excels for privacy reasons as you mention, but so does Safari. The lower memory footprint and battery life usage are benefits of Safari that aren't mentioned.

Alternative word for metaprogramming

Metaprogramming, as the lecture correctly points out, is generally understood to mean "programming programs that write programs", and is (or should be) considered a field of AI. I'm currently exploring that specific topic, so using it for other things will lead to confusion.

For the Build Systems/Continuous Integration lecture, why not call it Periprogramming, from the ancient Greek for "around", ie the things we do around programming, instead?

Wrong prompts in `cd` examples

missing:~$ cd ..
missing:~$ ls
missing
missing:~$ cd ..
missing:~$ ls

should presumably be

missing:~$ cd ..
missing:/home$ ls
missing
missing:/home$ cd ..
missing:/$ ls

Creating the Thai version in the same concept of Missing Semester

Hi there,

I am Kanisorn from Thailand. I learned this course and I think this is really good content here. I would like to ask that I will create the Thailand CS Missing Semester and re-create contents to Thai.

I plan to use re-create content because I love the concept of Missing Semester but we might modify or create by our own style. All is free, serve on GitHub Pages via http://docusaurus.io/. And here we have fews Thai contributers to help to create/validate Thai contents. We will have more or less lesson from your current course.

I am here because I concern about the license. Would I need to strict on the same license here.

Thanks.

Is 'RemoteForward' in .ssh/config in exercises correct?

As described in the Remote Machines exercises, including the line
RemoteForward 9999 localhost:8888
in your .ssh/config fails silently on my machine.

In particular, with this setup, even running netstat -tln from the host machine does not show anything listening on localhost:9999.

However, if you change the .ssh/config to:
LocalForward 9999 localhost:8888
Everything works perfectly.

Can the RemoteForward be correct? I've been trying to dig into this for hours and cannot find any way to make it work, even with significant manual trials using ssh -R

`git commit -C` for the last exercise in Security

I have been struggling with this exercise for a while to see how git commit -C could be used to sign a git commit since according to its man page, it takes an existing commit object, and reuse the log message and the authorship information (including the timestamp) when creating the commit.

Isn't git commit -S the command used to sign a git commit? Worked that way when I tried at least. Not sure if I overlooked something or is it a typo maybe?

Debugging and Profiling "This is red" isn't working

Noticing that this section within the "Debugging and Profiling" lecture (https://missing.csail.mit.edu/2020/debugging-profiling/) isn't working:

For example, executing echo -e "\e[38;2;255;0;0mThis is red\e[0m" prints the message This is red in red on your terminal.

I provided an alternative command which was taken from here: https://stackoverflow.com/a/57559997/4962467

The first command is from the lecture and the second command is the solution from Stack Overflow:
image

Am I inputting the lecture command into my terminal prompt incorrectly?

-d option doesn't exist on macOS for xargs [Lecture 2]

In Shell Tools and Scripting lecture, Q4 of exercises states in hint

check -d flag for xargs

This doesn't work on macOS as it is a GNU extension. Had to figure this out. The alternative is using -print0 option on find and -0 option on xargs.

A mirror site for Chinese translation

Thank you guys, this is such a great course! It is even more helpful to self-taught engineers like me. so I really want to contribute and what I can do is to translate this into Chinese to make it easier for Chinese developers to learn.
so I create a mirror site of your project here : https://missing-semester-cn.github.io/ as the Chinese version and if it looks good to you, please can you consider to link it from yours?

Though the site is not finished yet, I will translate one or two lecture notes per week, so I think it will be finished very soon.

BTW, you can check the source code here: https://github.com/missing-semester-cn/missing-semester-cn.github.io

`which echo` is misleading

The overview page uses which echo to show which program is executed when running echo $PATH. This is misleading. which only shows executables on the $PATH, but echo is built into most shells. For example, in Bash:

$ type -a echo
echo is a shell builtin
echo is /bin/echo

So when I run echo $PATH (or preferably echo "$PATH") it does not run /bin/echo, but rather the shell built-in. This is also mentioned in the GNU coreutils man echo:

NOTE: your shell may have its own version of echo, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.