background preloader

Programming

Facebook Twitter

20/20: Top 20 Programming Lessons I've Learned in 20 Years. This post could be viewed as hard lessons learned for newly graduated college students, entry-level programmers, or advanced developers who just want a chuckle. I've been programming since I was 11 and I've loved technology and programming every since. There are some hard and easy lessons I've learned over time. As a fellow programmer, you may not have experienced these, but I'm offering them to individuals who are interested in learning more from my experiences. I'll be updating this as time goes on. I may have more, but in my 20 year period, I don't think there are any additional rules that this list doesn't include. :-) Here are my most memorable lessons so far.

Set a duration of how long you think it should take to solve a problem - C'mon, admit it! I hope this list of lessons learned have either inspired or provided a chuckle for some people. Activities | Computer Science Unplugged. Anatomy of a Program in Memory : Gustavo Duarte. Memory management is the heart of operating systems; it is crucial for both programming and system administration. In the next few posts I’ll cover memory with an eye towards practical aspects, but without shying away from internals.

While the concepts are generic, examples are mostly from Linux and Windows on 32-bit x86. This first post describes how programs are laid out in memory. Each process in a multi-tasking OS runs in its own memory sandbox. This sandbox is the virtual address space, which in 32-bit mode is always a 4GB block of memory addresses. This does not mean the kernel uses that much physical memory, only that it has that portion of address space available to map whatever physical memory it wishes. Blue regions represent virtual addresses that are mapped to physical memory, whereas white regions are unmapped.

The topmost segment in the process address space is the stack, which stores local variables and function parameters in most programming languages. 189 Comments. Computer System Engineering | MIT Video Course. CS 151: Computational Thinking. Course Information for Fall 2010 Instructor Information Prof. Bruce A. Maxwell Office: Roberts 224B Phone: 859-5854 AIM: brucemaxwell@mac.com Office hours: MW 1-2:30pm, or stop by Course Description The course is an introduction to computational thinking: how we can describe and solve problems using a computer. We will use the Python computer language as the basis for the course, with weekly lab sessions to provide hands-on, supervised learning. Textbook J.

Handouts Useful links. How to Design Programs. How to Become an Expert. Top 7 Qualities. Test Early » 10 Bad Build Practices - Part I. The Lowly Programmer: The algorithms of memory - StumbleUpon. Top 50 Free Open Source Classes on Computer Science : Comtechtor. Computer science is an interesting field to go into. There are a number of opportunities in computer science that you can take advantage of. With computers increasingly becoming a regular part of life, those who can work with computers have good opportunities. You can find a good salary with a program in computer science, and as long as you are careful to keep up your skills. Here are 50 free opencourseware classes that can help you learn more about computer science: Introduction to Computer Science Learn the basics of computer science, and get a foundation in how computer science works.

Introduction to Computer Science: Learn about the history of computing, as well as the development of computer languages. Comprehensive Computer Science Collections If you are interested in courses that are a little more comprehensive in nature, you can get a good feel for computer science from the following collections: Programming and Languages Computer Software Computer Systems and Information Technology. Tutorial: Getting Started - Chrome Web Store — Google Developers. Got a web app? Follow this tutorial to add your existing web app to the Chrome Web Store. If you don't already have a web app, you can still follow this tutorial with any other website you own. Any website can be an installable web app, although the site should follow a few design principles. Note: If you're interested in developing a Chrome Extension or Chrome App instead of a web app, follow the extension tutorial or the Chrome App tutorial.

Then return to this page, and start at Step 5: Zip up your app. Before you start, choose your web app and make sure that you can verify your ownership of its site. Also, note the location of the Chrome Developer Dashboard. Choose the web app that you want to publish, making a note of its homepage URL and any other URLs that it includes. Back to top Every app needs a manifest—a JSON-formatted file named manifest.json that describes the app. All new apps must specify manifest version 2 without quotes (see manifest version documentation).

"web_url" "urls" Why Programming Languages? Tom Van Cutsem When I present my research work on programming languages, people often ask me "why do you need a new programming language to solve this problem? Why not just implement it as a library? " Or, I get asked "why didn't you implement it as an extension to {some existing language}? " In this essay I will try to make explicit some of the goals and motivations behind language design. They are formulated wholly from my own background in this area, so I might be missing some important ones I haven't thought about. In this essay, I will distinguish four primary goals that can drive the language design process: Language as syntactic abstraction mechanism: to reduce repetitive "boilerplate" code that cannot be abstracted from using another language's built-in abstraction mechanisms. These particular goals are not necessarily always present and explicit in a language designer's mind when he or she starts to develop a new language.

Language as syntactic abstraction mechanism Conclusion.