Programming Applications & Frameworks Introduction to “Programming Application & Frameworks” Pushpitha Sandaruwan Senior Software Engineer IFS R&D International +94714969763 sandaru.weerasooriya@gmail.com Module Outline Module Outline Learning Outcomes Learning Outcomes • This module intends to gather the knowledge in many areas of frameworks and latest technologies of these frameworks comprises • At the end of the module student will be able to Understand the basic concepts of Frameworks Incorporate Industry Standard Software Development practices Develop Applications using Java Frameworks Use Restful style web services Develop Full Stack Web Applications using Java Script Frameworks Be a lifelong learner Evaluation Evaluation Continuous Assessments 60% • • • • • Mid Semester Examination Assignments Group Project Technical Blog Lab Examination End Semester Exam 40% Primary References Primary References End Semester Exam 40% Today… • Programming Paradigms • Version Controlling Systems • GIT • Debugging and Troubleshooting • Stack Overflow Programming Paradigms Programming Paradigms • Programming paradigms are a way to classify programming languages based on their features. • i.e. • • • • Object-Oriented Functional Procedural Imperative Functional Programming • Treats computation as the evaluation of mathematical functions avoiding state and mutable data • Main traits • Lambda calculus, formula, recursion, referential transparency, no side effects • Examples • • • • • C++ Lisp Python Java Script Ruby Home Work • What it means by 1. 2. 3. 4. 5. Lambda calculus formula recursion referential transparency no side effects Functional Programming • Example (Python) • Printing first 10 Fibonacci numbers, iterative OOP Programming • Treats data fields as objects manipulated through predefined methods only • Main traits • Objects, methods, message passing, information hiding, data abstraction, encapsulation, polymorphism, inheritance, • Examples • • • • • • C++ C# Java PHP Java Script Python OOP Programming • Example (Java) Home Work • Refresh your knowledge about OOP concepts Version Controlling Systems- VCS What is a VCS ? • Version control systems are a category of software tools that help a software team manage changes to source code over time. • Version control software keeps track of every modification to the code in a special kind of database • If a mistake is made… • developers can turn back the clock • compare earlier versions of the code to help fix the mistake • minimizing disruption to all team members Why use a VCS ? • Collaboration • With a VCS, everybody on the team is able to work absolutely freely - on any file at any time • The VCS will later allow you to merge all the changes into a common version • Storing versions properly • A version control system acknowledges that there is only one project • Restoring previous versions • Understanding what happened • Every time you save a new version of your project, your VCS requires you to provide a short description of what was changed • Backup VCS Terminology Repo/Repository Object database were your history and configuration is stored. Often it contains a work tree clone A clone of a repository/ exact copy of existing repository commit The action of storing a new snapshot of the project’s state in the VCS history branch A "branch" is an active line of development. A branch in VCS is just a "label" which points to a commit tree Directory which contains files and sub directories HEAD A symbolic name to describe the currently checked out commit tag A descriptive name given to one of your commits history Describes all ancestor commits version released version of your project / Specific commit Types of Version control • Local version control systems • Everything is in your Computer • Oldest VCS • Still distributed with many computers today • i.e. Mac OS X • Cannot use for collaborative software development Cont.… • Centralized version control systems • Can be used for collaborative software development • everyone knows to a certain degree what everyone else on the project is doing • Administrators have fine-grained control over who can do what; • Most obvious is the single point of failure that the centralized server represents Cont.… • Distributed Version Control Systems • No single point of failure • Clients don’t just check out the latest snapshot of the files: they fully mirror the repository • If any server dies, and these systems were collaborating via it, any of the client repositories can be copied back • Can collaborate with different groups of people in different ways simultaneously within the same project GIT Introduction to GIT • GIT is the most commonly used version control system today and is quickly becoming the standard for version control. • As a distributed revision control system it is aimed at speed, data integrity, and support for distributed, non-linear workflows. • GIT was created by Linus Torvalds in 2005 for development of the Linux kernel • Its current maintainer since 2005 is Junio Hamano • Current GIT Version 2.16 Introduction to GIT • More to come …… Debugging and Troubleshooting Debugging and Troubleshooting • Troubleshooting: solving a problem, basically an end product of fixing a problem. AND • Debugging: is the process/steps to solve the problem, such as: removing an error on the computer. Steps to Debug Efficiently and Effectively 1. Always Reproduce the Bug Before You Start Changing Code 2. Understand Stack Traces 3. Write a Test Case that Reproduces the Bug Cont.… 4. Know Your Error Codes 5. Google for answers (spend less than 30 mins) 6. Ask for a help (Code Mentor | forum) Stack Overflow Stack Overflow • Stack Overflow is a privately held website, the flagship site of the Stack Exchange Network, created in 2008 by Jeff Atwood and Joel Spolsky. Create your account Create your account https://stackoverflow.com/ Today we discussed • Intro to Module • Programming Paradigms • Version Controlling Systems and GIT • Debugging and Troubleshooting • Stack Overflow To be continued…