background preloader

Introduction to Object Oriented Programming Concepts (OOP) and More

Introduction to Object Oriented Programming Concepts (OOP) and More
Recommended framework: Table of contents 1. Introduction I have noticed an increase in the number of articles published in the Architecture category in CodeProject during the last few months. One day I read an article that said that the richest two percent own half the world's wealth. Coming back to the initial point, I noticed that there is a knowledge gap, increasing every day, between architects who know how to architect a system properly and others who do not. 2. This article began after reading and hearing questions new developers have on the basics of software architecture. As I see it, newcomers will always struggle to understand the precise definition of a new concept, because it is always a new and hence unfamiliar idea. 3. This article is an effort to provide an accurate information pool for new developers on the basics of software architecture, focusing on Object Oriented Programming (OOP). 4. 4.1. 4.2. 4.3. OOP is a design philosophy. 1. Related:  Getting Started

The Downfall of Imperative Programming | FP Complete Imperative programming is in my bloodstream. I've been a C++ programmer for most of my life. I wrote a book about C++. I helped Andrei and Walter design an imperative language D. If I dabbled in functional programming, it was mostly to make my imperative programs better. Over the years I also developed a real passion for concurrent programming. There is no doubt in my mind, and most experts agree, that concurrency and parallelism are the future of programming. I have recently attended the Multicore DevCon in San Jose, which was part of a big DesignWest Expo. Remember the times when progress in software was driven by adding abstraction layers between programming languages and the details of processor architectures? I may surprise you that the state of the art in parallel programming is OpenMP and OpenCL. But maybe this is just a temporary state of affairs and there is ongoing work to ratchet the levels of abstraction back to where they'd been. Here's the key insight:

Indoor Navigation with SVG SVG, positioning technologies, mobility, guiding system Christian SchmittResearcherFraunhofer FIT Schloss Birlinghoven Sankt-Augustin Germany christian.schmitt@fit.fraunhofer.de Oliver KaufmannFraunhofer FITSchloss Birlinghoven Sankt-Augustin Germany oliver.kaufmann@fit.fraunhofer.de This paper describes a mobile guide providing office building visitors with indoor navigation aid. 1. 1. FIT has a long history in developing mobile guides for museums, fairs, symposiums. Our mobile guide was developed with the aim to be used for demo purposes by visitors to our institute, for demonstrating our expertise in mobile computing, positioning technologies and human-computer interface. Present information about our research department (employees, projects)Let the user experience indoor navigation on our floor Presenting information can be easily achieved by integrating functionalities from the Pocket Internet Explorer in the application and having the content available as HTML pages. 2. 3. 4.

The Perils of JavaSchools by Joel Spolsky Thursday, December 29, 2005 Lazy kids. Whatever happened to hard work? A sure sign of my descent into senility is bitchin' and moanin' about "kids these days," and how they won't or can't do anything hard any more. “You were lucky. When I was a kid, I learned to program on punched cards. When I started interviewing programmers in 1991, I would generally let them use any language they wanted to solve the coding problems I gave them. 99% of the time, they chose C. Nowadays, they tend to choose Java. Now, don't get me wrong: there's nothing wrong with Java as an implementation language. Wait a minute, I want to modify that statement. Instead what I'd like to claim is that Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers. You used to start out in college with a course in data structures, with linked lists and hash tables and whatnot, with extensive use of pointers. Still. Feh. Next:

Indoor Autonomous Positioning SCP technology makes it possible to provide reliable, consistent, and accurate indoor positioning without the support of network infrastructure and services. By exploiting freely available signals including GPS, cellular, digital television, and wireless LAN (e.g. WiFi), SCP based Doppler Aided Inertial Navigation (DAIN) determines location through a sensor fusion approach. Combining inertial, magnetic, and gravity data with the SCP RF observables, DAIN provides continuous position, velocity, and direction information. A fundamental breakthrough in indoor positioning, SCP DAIN is ideal for emerging location enabled applications hosted on smart phone devices. DAIN is an ideal enabler for both consumer and commercial applications.

Revenge of the Nerds May 2002 In the software business there is an ongoing struggle between the pointy-headed academics, and another equally formidable force, the pointy-haired bosses. Everyone knows who the pointy-haired boss is, right? The pointy-haired boss miraculously combines two qualities that are common by themselves, but rarely seen together: (a) he knows nothing whatsoever about technology, and (b) he has very strong opinions about it. Suppose, for example, you need to write a piece of software. Why does he think this? Well, this doesn't sound that unreasonable. But all languages are not equivalent, and I think I can prove this to you without even getting into the differences between them. Presumably, if you create a new language, it's because you think it's better in some way than what people already had. So, who's right? Once you start considering this question, you have opened a real can of worms. The disadvantage of believing that all programming languages are equivalent is that it's not true.

How to build your own Linux distro Since Manchester University's Owen Le Blanc released MCC Interim Linux (generally agreed to have been the first Linux distribution), way back in 1992, there have been hundreds of ways to get the world's favourite free software operating system on to a computer. The diversity of alternatives reflects the diversity in the development community, with distros split along technical, functional, linguistic and even ideological lines. There have been large distros, tiny ones, bleeding edge and rock-solid stable distros. Easy for the newbie to install, or downright impenetrable to the uninitiated. Created exclusively with free software as a badge of pride, or so proprietary in attitude that not even the toolchain was fully GNU (hello Red Flag Server 4.1, built with the Intel compiler in 2004). So with all the variety that's already out there, why would anyone want to create their own distro? What this amounts to is that it doesn't take much to warrant a new distro. Which base? The simple choices

6 Things You Need to Learn To Build Your Own Prototype This is the fourth part of a series on becoming your own technical co-founder. In 2008, we couldn’t find a technical co-founder for Yipit. I’m writing about how I became our technical co-founder. Hopefully, I’ll encourage other entrepreneurs with a dream but no technical co-founder options to take their destiny into their own hands. Disclaimer: If you know a great technical co-founder that wants to work with you, join them. Learning Python I know the below will seem daunting. I remember reading the Learning Python book and putting it down after 20 pages and having a major freak-out. What was I doing? I didn’t have the benefit of reading the post below. But, we were going to have to give up unless I became our technical co-founder and I was definitely not giving up. Six months later, much to my surprise (though I now know why), I was ready to build any prototype we needed. Lastly, you’ll get a lot of skeptical looks from people when you tell them you are trying to teach yourself.

Java programming test, hands-on skills - BetterProgrammer.com Don't learn to code. Learn to think. It seems like everyone is trying to learn to code: Code.org has celebrities like Bill Gates, Mark Zuckerberg, and Chris Bosh telling you anyone can code; CoderDojo's are springing up all over the country; the UK has made it part of their official curriculum for all grade school kids. I think this is slightly misguided. Don't get me wrong - I do think the world would be better off if everyone had some familiarity with coding - but coding itself should not be the goal. Computers and programming are just tools. They are a means to an end. The real goal should be to teach people a new way to think. If you prefer a video explanation, I highly recommend Simon Peyton Jones' wonderful TED talk Teaching Creative Computer Science, which was the inspiration for this post: Still here for the written version? To answer that, we'll take a walk. Welcome to the real world You're probably reading this blog post in Chrome or Firefox, running on Windows or OS X, on a laptop or desktop. Let's head outside.

Practice-It!, a web-based Java practice problem tool for computer science students

Related: