A buffer overflow is an anomaly where a program writes data to a buffer beyond its allocated memory, overwriting adjacent memory locations. This can cause erratic program behavior and can be exploited for malicious purposes. Bounds checking and other techniques are used to combat buffer overflows, but require additional code and processing time.
University of Washington
Autumn 2022
This course develops students' understanding of software functioning at different levels of abstraction. Focus areas include C, assembly, and low-level data representation. It also introduces concepts of operating systems and differences between Java and C. It serves as a starting point for those interested in hardware or high-level abstractions.
No concepts data
+ 26 more conceptsBrown University
Spring 2023
Introductory course covering computer system fundamentals including machine organization, systems programming in C/C++, operating systems concepts, isolation, security, virtualization, concurrency, and distributed systems. Projects involve implementing core OS functionality.
No concepts data
+ 32 more conceptsUniversity of Washington
Autumn 2021
This course covers a wide range of computer security topics, including software security, cryptography, web security, malware, and physical security. It encourages a "security mindset" while requiring a firm understanding of computer science fundamentals and command-line Unix development environment.
No concepts data
+ 18 more conceptsStanford University
Autumn 2022
This Stanford University course delves into the depths of computer systems and programming. It continues from the introductory sequence, expanding students' programming experience using the C language, exploring machine-level code, computer arithmetic, memory management, and more.
No concepts data
+ 25 more conceptsWellesley College
Spring 2023
This course explores the inner workings of computers, focusing on how they execute programs. Students gain an in-depth understanding of software and hardware abstractions, ranging from programming languages to transistors. Key areas covered include computational building blocks, hardware-software interfaces, data representation, and practical system abstractions. The course also emphasizes structured reasoning about program execution and promotes skills for independent learning, critical thinking, and problem-solving in computer science.
No concepts data
+ 25 more concepts