Giter Site home page Giter Site logo

advanced-programming's Introduction

Advanced Programming Build Status

SISSA webpage

Provide advanced knowledge of both theoretical and practical programming in C++ and Python, with particular regard to the principles of object oriented programming and best practices of software development (advanced use of version control systems, continuous integration, unit testing).

Prerequisites

  • Familiarity with linux terminal and a text editor (e.g., emacs, vim)
  • A bit of knowledge of git is helpful

References

  • Programming: Principles and Practice using C++ (Second Edition), Bjarne Stroustrup, Addison-Wesley 2014, ISBN 978-0-321-99278-9

  • The C++ Programming Language, Bjarne Stroustrup, Addison-Wesley 2013, ISBN 978-0321563842

  • Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Pearson Education 1993.

Locations

Lecture room is A-005 in the main SISSA building in via Bonomea 265. On 12/10 and 19/10 the lecture will at the Big meeting room (VII floor).

Syllabus

  1. Scientific programming environment. You will learn the basic ingredients needed to efficiently develop scientific software in *nix environment.

  2. Introduction to C++. You will learn the logic and the basics of C++, the built-in data types and how to effectively use them. Best practices in programming will be addressed.

  3. Object orientation in C++. The principles of Object-Oriented programming will be presented with particular attention to their implementations in C++. Some of the most important Design Patterns will be discussed.

  4. Advanced features of C++11/14/17. Some of the new features of standard C++11/14/17 will be introduced and explained.

  5. Object-Oriented programming in Python. After a recap of the basics of Python, you will learn how to program in object-oriented fashion in the Python programming language.

How to get the material

Non-experienced git users

  • Very first time (N==0)
  • N > 0
    • open a terminal
    • cd to the folder advanced-programming
    • git pull --rebase origin master
  • if(conflict)
    • ask

Experienced git users

  • Very first time (N==0)
    • fork the repository
    • clone either your fork or this repository
    • add the other remote
  • N >= 0
    • use branches
    • rebase on the correct master branch
    • merge the branches in your local master
    • push on the master of your fork
  • if(conflict)
    • if(rebase)
      • git add
      • git rebase --continue
      • if(bigger mess)
        • git rebase --abort
    • if(merge)
      • git add
      • git commit
      • git merge --continue
      • if(bigger mess)
        • git merge --abort

advanced-programming's People

Contributors

asartori86 avatar domagojkorais avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.