Key Concepts

Here some key concepts / terminologies that you found in most formal environment and you must use it as well.

  • Programming Paradigms
    • Functional Programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. Functional programming has its roots in lambda calculus (λ-calculus).
      • First-class and higher-order functions
      • Pure functions
      • Anonymous functions
      • Partial application or Currying
      • Recursion
      • Strict (eager) versus non-strict (lazy) evaluation
      • Type systems
      • Languages: Haskell, Erlang, Lisp, Scala, F#, …
    • Imperative programming is a programming paradigm that describes computation in terms of statements that change a program state.
      • Assignment statements (state changes)
      • Evaluation of complex expressions (operations, function evaluations, and assignments)
      • Looping statements (such as in while loops, do while loops and for loops)
      • Jump (called “goto” in many languages)
      • Languages: C#, Java
  • Security
    • Cross-site scripting (XSS) is a type of computer security vulnerability typically found in Web applications
    • Threat In computer security a threat is a possible danger that might exploit a vulnerability to breach security and thus cause possible harm
    • Vulnerability is a weakness which allows an attacker to reduce a system’s information assurance
    • Security Risk describes employing the concept of risk to the security risk management paradigm to make a particular determination of security orientated events
  • Network
  • Development / Architecture
    • Agile Software Development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams
      • Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development.
    • Object-Oriented Programming (OOP) is a programming paradigm that represents concepts as “objects” that have data fields (attributes that describe the object) and associated procedures known as methods
    • Object-Oriented Design (OOD) is the process of planning a system of interacting objects for the purpose of solving a software problem
    • Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing recurring solutions to common problems in software design… describing 23 classic software design patterns… Pattern by type: Creational (Abstract Factory, Singleton, …) , Structural (Composite, Facade, Proxy, …) and Behavioral (Command, Iterator, Observer, …)
      The authors are often referred to as the Gang of Four (GoF)
      Design Patterns cover.jpg
    • Service-Oriented Architecture (SOA) is a software design methodology based on structured collections of discrete software modules, known as services, that collectively provide the complete functionality of a large or complex software application
    • Object-relational mapping (ORM) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages.
    • Web Services is a method of communications between two electronic devices over the World Wide Web
      • SOAP originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks. It relies on XML Information Set for its message format, and usually relies on other Application Layer protocols, most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP), for message negotiation and transmission… After SOAP was first introduced, it became the underlying layer of a more complex set of Web Services, based on Web Services Description Language (WSDL) and Universal Description Discovery and Integration (UDDI).
      • Representational state transfer (REST) is an architectural style consisting of a coordinated set of constraints applied to components, connectors, and data elements, within a distributed hypermedia system… One can characterise applications conforming to the REST constraints described in this section as “RESTful“… REST uses these operations (GET, POST, PUT, DELETE) and other existing features of the HTTP protocol.
    • Convention over configuration (coding by convention /configuration by exception) is a software design paradigm which seeks to decrease the number of decisions that developers need to make, gaining simplicity, but not necessarily losing flexibility
    • Unified Modeling Language (UML) is a standardized, general-purpose modeling language in the field of software engineering
    • User eXperience (UX) Design is a broad term used to explain all aspects of a person’s experience with the system, including the interface, graphics, industrial design, physical interaction, and the manual
      • Storyboards are graphic organizers in the form of illustrations or images displayed in sequence for the purpose of pre-visualizing a motion picture, animation, motion graphic or interactive media sequence
    • Model–View–Controller (MVC) is a software architecture pattern which separates the representation of information from the user’s interaction with it
    • Asynchronous JavaScript and XML (AJAX) is a group of interrelated web development techniques used on the client-side to create asynchronous web applications.
    • Framework In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user written code, thus providing application specific software. A software framework is a universal, reusable software platform used to develop applications, products and solutions. Software frameworks include support programs, compilers, code libraries, an application programming interface (API) and tool sets that bring together all the different components to enable development of a project or solution.
    • Application Programming Interface (API) is a protocol intended to be used as an interface by software components to communicate with each other.
    • Aspect-Oriented Programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns.
    • Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems.
    • Marshalling (sometimes spelled marshaling with a single l) is the process of transforming the memory representation of an object to a data format suitable for storage or transmission, and it is typically used when data must be moved between different parts of a computer program or from one program to another. Marshalling is similar to serialization and is used to communicate to remote objects with an object… The opposite, or reverse, of marshalling is called unmarshalling (or demarshalling, similar to deserialization).
    • Integrated Development Environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development… Some IDEs are dedicated to a specific programming language, allowing a feature set that most closely matches the programming paradigms of the language. However, there are many multiple-language IDEs, such as Eclipse, ActiveState Komodo, IntelliJ IDEA, Oracle JDeveloper, NetBeans, Microsoft Visual Studio, Genuitec MyEclipse and WinDev. Xcode is dedicated to a closed set of programming languages.
  • Java
    • Java Platform, Enterprise Edition (Java EE) is Oracle’s enterprise Java computing platform. The platform provides an API and runtime environment for developing and running enterprise software, including network and web services, and other large-scale, multi-tiered, scalable, reliable, and secure network applications
    • Java Persistence API (JPA) is a Java programming language framework managing relational data in applications using Java Platform (Java EE / Java SE)
    • Enterprise JavaBeans (EJB) is a managed, server-side component architecture for modular construction of enterprise applications
    • Interceptors are used in conjunction with Java EE managed classes to allow developers to invoke interceptor methods on an associated target class, in conjunction with method invocations or lifecycle events. Common uses of interceptors are logging, auditing, and profiling.
    • CDI, the purpose of this specification is to unify the JSF managed bean component model with the EJB component model, resulting in a significantly simplified programming model for web-based applications
    • Java Naming and Directory Interface (JNDI) is a Java API for a directory service that allows Java software clients to discover and look up data and objects via a name.
  • .NET Framework
    • Language-Integrated Query (LINQ) introduces standard, easily-learned patterns for querying and updating data, and the technology can be extended to support potentially any kind of data store. Visual Studio includes LINQ provider assemblies that enable the use of LINQ with .NET Framework collections, SQL Server databases, ADO.NET Datasets, and XML documents… see also LINQ to ObjectsLINQ to ADO.NET (LINQ to SQLLINQ to DataSet,  LINQ to Entities), Parallel LINQ (PLINQ)
      Tool: LINQPad
    • EF Fluent API is used to configure properties, types and relationships in your Code First model.
      Fluent API and Properties/Types: http://msdn.microsoft.com/en-us/data/jj591617
      Fluent API and Relationships: http://msdn.microsoft.com/en-us/data/jj591620
      image
    • ADO.NET provides consistent access to data sources such as SQL Server and XML, and to data sources exposed through OLE DB and ODBC. Data-sharing consumer applications can use ADO.NET to connect to these data sources and retrieve, handle, and update the data that they contain… The ADO.NET classes are found in System.Data.dll
      • ADO.NET Data Providers  is used for connecting to a database, executing commands, and retrieving results… .NET Framework data providers are lightweight, creating a minimal layer between the data source and code, increasing performance without sacrificing functionality… The four core objects that make up a .NET Framework data provider: Connection, Command, DataReader & DataAdapter
        Microsoft ADO.NET Architecture
        Imagen Source: http://www.empress.com/whatsnew/techNews/Jul2010DatabaseADO.NETDataProvider.html
      • ADO .NET Entity Framework is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers usually need to write. (LINQ to Entities, Typed ObjectQuery, etc)
        Entity Framework
        Image Source: http://msdn.microsoft.com/en-us/data/aa937709.aspx
    • Common Language Runtime (CLR) The .NET Framework provides a run-time environment called the common language runtime, which runs the code and provides services that make the development process easier.
      The CLR is Microsoft’s implementation of the Common Language Infrastructure (CLI) standard, initially developed by Microsoft itself. It is now defined by a public standard, the ECMA Common Language Infrastructure specification. 


      Image Source: http://en.wikipedia.org/wiki/Common_Language_Runtime

    • .NET Web Service:
      • ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.

        Image Source: http://www.codeproject.com/Tips/678138/MVC-using-Web-API-and-JQuery-to-GET-or-POST-Data
      • Windows Communication Foundation (WCF) is Microsoft’s unified programming model for building service-oriented applications. It enables developers to build secure, reliable, transacted solutions that integrate across platforms and interoperate with existing investments.

        Image Source (Figure2): http://iprodeveloper.com/rpg-programming/soa-using-ca-plex-and-wcf
    • Windows Workflow Foundation (WF) provides the declarative framework for building application and service logic and gives developers a higher level language for handling asynchronous, parallel tasks and other complex processing.
    • Silverlight is a powerful development tool for creating engaging, interactive user experiences for Web and mobile applications. Silverlight is a free plug-in, powered by the .NET framework and compatible with multiple browsers, devices and operating systems, bringing a new level of interactivity wherever the Web works… see also: Windows Presentation Foundation (WPF)