background preloader


Facebook Twitter

CS50's Introduction to Computer Science. This is CS50x , Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience.

CS50's Introduction to Computer Science

An entry-level course taught by David J. Malan, CS50x teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Students who earn a satisfactory score on 9 problem sets (i.e., programming assignments) and a final project are eligible for a certificate. HarvardX requires individuals who enroll in its courses on edX to abide by the terms of the edX honor code.

HarvardX pursues the science of learning. Learning How to Learn (And 20+ Studies) - Max's Two Cents. I’ve been interested in cognitive science and effective learning methods for years.

Learning How to Learn (And 20+ Studies) - Max's Two Cents

I’ve read multiple books and articles and put many ideas to test. So I thought I’d synthesize my notes into the blog post, add references to scientific studies, and share it with you. Effective Learning Strategies Distributed learning: study less in each session but more frequentlyActive recall: actively test your knowledge and skillsDistributed recall: space the tests in time and adjust the intervals based on performanceInterleaving: practice multiple related yet different skills/concepts simultaneouslyElaborative interrogation (quiz-and-recall): ask yourself questions and use the material you’ve learned to answer themSelf-explanation and the Feynman technique: explain what you’ve just learned in simple terms Physiology and Brain’s Health SleepExerciseNutrition Disclaimer and Introduction I have no formal background in cognitive science or neuroscience and this has been more of a side interest.

Meditate. Floating Point Visually Explained. August 29, 2017 Floating Point Visually Explained While I was writing a book about Wolfenstein 3D[1], I wanted to vividly demonstrate how much of a handicap it was to work without floating points.

Floating Point Visually Explained

My personal attempts at understanding floating points using canonical[2] articles[3] were met with significant resistance from my brain. How I recorded an album on my own, in my room - Romes - Medium. Reverse engineering my router's firmware with binwalk - #embeddedbits. A few days ago I decided to reverse engineer my router’s firmware image with binwalk.

Reverse engineering my router's firmware with binwalk - #embeddedbits

I’ve bought the TP-Link Archer C7 home router. Not one of the best, but good enough for my needs. One thing I always do when I buy a new router is install OpenWRT. Why? Because the manufacturer’s firmware quality is usually bad, are not maintained over time and is insecure, with many bugs waiting to be exploited. When installing and configuring OpenWRT, I also downloaded the last version of the Archer C7 official firmware image provided by TP-Link and decided to analyze it. What is binwalk? The Deadlock Empire. Welcome to The Deadlock Empire, commander!

The Deadlock Empire

The skills you need are your intelligence, cunning, perseverance and the will to test yourself against the intricacies of multi-threaded programming in the divine language of C#. Each challenge below is a computer program of two or more threads. You take the role of the Scheduler - and a cunning one! Your objective is to exploit flaws in the programs to make them crash or otherwise malfunction.

For example, you might cause a deadlock to occur or you might schedule context switches in such a way that two threads enter the same critical section at the same time. You are the Scheduler - you only have one tool at your disposal: the ability to switch contexts at any time, as the total master of time and interruptions. Tutorial 2: Non-Atomic Instructions In the second tutorial, you will learn to expand statements. Countdown Event Revisited I fixed the bug.

Schedule [Computer Architecture - Fall 2019]


50+ Data Structure and Algorithms Interview Questions for Programmers. Modern Microprocessors - A 90-Minute Guide! WARNING: This article is meant to be informal and fun!

Modern Microprocessors - A 90-Minute Guide!

Okay, so you're a CS graduate and you did a hardware course as part of your degree, but perhaps that was a few years ago now and you haven't really kept up with the details of processor designs since then. In particular, you might not be aware of some key topics that developed rapidly in recent times... pipelining (superscalar, OOO, VLIW, branch prediction, predication) multi-core and simultaneous multi-threading (SMT, hyper-threading) SIMD vector instructions (MMX/SSE/AVX, AltiVec, NEON) caches and the memory hierarchy Fear not! This article will get you up to speed fast. Getting Started - OSDev Wiki. First of all, developing an operating system is probably one of the most challenging things you can do on a computer (next to killing the final boss in Doom on Nightmare difficulty level).

Getting Started - OSDev Wiki

Composing an operating system requires a lot of knowledge about several complex areas within computer science. You need to understand how hardware works, be able to read and write the complex Assembly language, and also a higher level language (like for instance C, C++ or Pascal). Your mind has to be able to wrap itself around abstract theory, and hold a myriad of thoughts.

Feel discouraged yet? Don't fear! There is nothing like the feeling of accomplishment when you - finally - after hours of struggling solve the problem. There is no absolute path you have to take when creating an OS. The Hard Truth Hopefully the basic fact that operating system development is a complicated and on-going process does not discourage you. At this stage, it would also pay to read the Beginner Mistakes page. Windows.

C language

Computer Science Unplugged. Creating cool online courses. A fundamental introduction to x86 assembly programming. Booting to the Boot Menu and BIOS.