installation, data types, control flow structures, loops, functions, strings, oop, data structures,...

76
Python Overview Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus http://academy.telerik.com Python Overview

Upload: lily-mason

Post on 24-Dec-2015

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Python OverviewInstallation, Data types, Control flow structures,

Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments

Telerik Academy Plushttp://academy.telerik.com

Python Overview

Page 2: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Table of Contents Python Overview Installing Python Python IDEs Data types Control flow structures Loops Data Structures and comprehensions

Lists, sets, dictionaries and tuples Destructuring assignments

Page 3: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Table of Contents Functions Lambda functions Modules Object-oriented programming

Creating classes

Properties, instance and class methods

Inheritance Best Practices The Zen of Python

Page 4: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Python OverviewWhat is Python? What can be used for?

Page 5: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Python Overview Python is a widely used general-purpose, high-level programming language Its design philosophy emphasizes

code readability

Its syntax allows programmers to express concepts in fewer lines of code

The language provides constructs intended to enable clear programs on both a small and large scale

Page 6: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Python Overview Python supports multiple

programming paradigms, including Object-oriented Imperative and functional

programming It features a dynamic type system

and automatic memory management Python is widely used for:

Web applications development: Django, Pyramid

Games with PyGame Automations scripts, Sikuli And more

Page 7: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Installing PythonOn MAC, Linux and Windows

Page 8: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Installing Python

On MAC Homebrew can be used$ brew install python

On Linux Part of Linux is built with Python, so it

comes out-of-the-box On Windows

Download the installer from https://www.python.org/

Add the installation path to System Variables

$PATH

Page 9: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Installing Python on Windows and MAC

Live Demo

Page 10: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Running Python in REPL Open the CMD/Terminal and run: You can run python code:

Print the numbers from 0 to 4

$ python

for i in range(5): print(i)

sum = 0for i in range(5, 10): sum += iprint(sum)

Sum the numbers from 5 to 9

Page 11: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Running Python Open the CMD/Terminal and run: You can run python code:

Print the numbers from 0 to 4

$ python

for i in range(5): print(i)

sum = 0for i in range(5, 10): sum += iprint(sum)

Sum the numbers from 5 to 9

Significant whitespace

matters a lot

Page 12: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Significant Whitespace

Significant whitespace is a way to write code in python This is actually the indentation

Significant whitespace creates blocks in python code It is the equivalent of curly brackets

({}) in other languages Good practices say "Use four spaces

for indent"

Page 13: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Python IDEsSublime Text, PyCharm, REPL

Page 14: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Python IDEs

Python is quite popular and there are my IDEs: PyCharm

Commercial and Community editions Ready-to-use

Sublime Text Free, open-source Needs plugins and some setup to work

properly LiClipse

Free, based on Eclipse Ready-to-use

Page 15: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Python IDEsLive Demo

Page 16: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Data types in Pythonint, float, etc

Page 17: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Data types in Python

Python supports all the primary data types: int – integer numbers

int(intAsString) parses a string to int

float – floating-point numbers float(floatAsString) parses a string to

float

None – like null bool – Boolean values (True and

False) str – string values (sequence of

characters)

Page 18: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Data TypesLive Demo

Page 19: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Control Flow Structures

If-elif-else

Page 20: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Control Flow Structures Python supports conditionals:

if conditionOne: # run code if conditionOne is Trueelif conditionTwo: # run code if conditionOne is False # but conditionTwo is Trueelse # run code if conditionOne and # conditionTwo are False

The conditions are True-like and False-like ""(empty string), 0, None are evaluated

to False

Non-empty strings, any number or object are evaluated to True

Page 21: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Conditional Statements

Live Demo

Page 22: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Loopsfor and while

Page 23: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Loops There are two types of loops in Python for loopfor i in range(5):

# run code with values of i: 0, 1, 2, 3 and 4

names = ['Doncho', 'Asya', 'Evlogi', 'Nikolay', 'Ivaylo']for i in range(len(names)): print('Hi! I am %s!'%names[i]);

while loopnumber = 1024binNumber = '';while number >= 1: binNumber += '%i'%(number%2) number /= 2print(binNumber[::-1])

Page 24: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

LoopsLive Demo

Page 25: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Data StructuresLists, Dictionaries, Sets

Page 26: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Data Structures in Python

Python has three primary data structures List

Keep a collection of objects

Objects can be accessed and changed by index

Objects can be appended/removed dynamically

Dictionary Keep a collection of key-value pairs

Values are accessed by key

The key can be of any type

Sets Keep a collection of unique objects

Page 27: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Lists in PythonCollections of objects

Page 28: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Lists in Python Lists are created using square

brackets ('[' and ']'):numbers = [1, 2, 3, 4, 5, 6, 7]

names = ["Doncho", "Niki", "Ivo", "Evlogi"]

Print a list of items: Object by object

for name in names: print(name)

Add new object to the list:names.append("Asya")

Or by index:for index in len(names): print(names[index])

Page 29: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Lists in PythonLive Demo

Page 30: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

List Comprehensions

List comprehensions are a easier way to create lists with values They use the square brackets ('['

and ']') and an expression insideeven = [number for number in numbers if not number % 2]longerNames = [name for name in names if len(name) > 6]kNames = [name for name in names if name.startswith("K")][eat(food) for food in foods if food is not "banana"]

Page 31: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

List ComprehensionsLive Demo

Page 32: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Sets in PythonCollections of unique values

Page 33: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Sets in Python Sets are created like lists, but using curly brackets instead of square They contain unique values

i.e. each value can be contained only once

__eq__(other) methods is called for each object

names = {"Doncho", "Nikolay"}names.add("Ivaylo")names.add("Evlogi")names.add("Doncho")print(names)# the result is {'Nikolay', 'Ivaylo', 'Evlogi', 'Doncho'}# 'Doncho' is contained only once

Page 34: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Sets in PythonLive Demo

Page 35: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Set Comprehensions

Set comprehensions are exactly like list comprehensions But contain only unique values

sentence = "Hello! My name is Doncho Minkov and …"parts = re.split("[,!. ]", sentence)words = {word.lower() for word in parts if word is not ""}

Page 36: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Set ComprehensionsLive Demo

Page 37: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Dictionaries in Python

Key-value pairs

Page 38: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Dictionaries in Python Dictionary is a collection of key-value

pairs The key can be of any type

For custom types, the methods __hash__() and __eq__(other) must be overloaded

Values can be of any type Even other dictionaries or lists

musicPreferences = { "Rock": ["Peter", "Georgi"], "Pop Folk": ["Maria", "Teodor"], "Blues and Jazz": ["Alex", "Todor"], "Pop": ["Nikolay", "Ivan", "Elena"]}

Page 39: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Dictionaries in PythonLive Demo

Page 40: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Dictionary Comprehensions

Dictionary comprehensions follow pretty much the same structure as list comprehensions Just use curly brackets {} instead of

square [] Provide the pair in the format key: value

names = {trainer.name for trainer in trainers}trainersSkills = { name: [] for name in names}{trainersSkills[trainer.name].append(trainer.skill) for trainer in trainers}

Page 41: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Dictionary Comprehensions

Live Demo

Page 42: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Tuples

Page 43: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Tuples in Python

A tuple is a sequence of immutable objects Much like lists, but their values

cannot be changed

Use parenthesis instead of square brackets

languages = ("Python", "JavaScript", "Swift")for lang in languages: print(lang)print("Number of languages: {0}".format(len(languages))

Page 44: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

TuplesLive Demo

Page 45: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Operations with Tuples

The following operations are supported for tuples: Get the length of the tuple:len((-1, 5, 11)) # returns 3

(1, 2) + (7, 8, 9) # returns (1, 2, 7, 8, 9)

Concatenate tuples:

(1,)*5 # returns (1, 1, 1, 1, 1)

Multiply by number:

Check for value:3 in (1, 2, 3) # returns True

Page 46: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Operations with TuplesLive Demo

Page 47: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Destructuring Assignments

Page 48: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Destructuring Assignments

Destructuring assignments (bind) allow easier extracting of values With tuples

With arrays

x, y = 1, 5 # equivalent to x = 1 and y = 5 x, y = y, x # swap the values

numbers = [1, 2][one, two] = numbers

numbers = list(range(1, 10))[first, *middle, last] = numbers

Page 49: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Destructuring Assignments

Live Demo

Page 50: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Functions in PythonSeparate the code in smaller and

reusable pieces

Page 51: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Functions in Python Functions in Python:

Are defined using the keyword "def"

Have an identifier

A list of parameters

A return type

def toBin(number): bin = '' while number >= 1: bin += '%i'%(number%2) number /= 2 return bin[::-1]

Page 52: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Functions in PythonLive Demo

Page 53: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Anonymous Functions

Python allows the creation of anonymous functions (lambda functions) Using the keyword lambda and a

special syntax:

printMsg = lambda msg: print('Message: {0}'.format(msg)) Same as:def printMsg2(msg): print('Message: {0}'.format(msg))

Mostly used for data structures manipulationevenNumbers = filter(lambda n: not n%2, numbers)

Page 54: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Lambda FunctionsLive Demo

Page 55: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Modules in PythonHow to separate the code in different

modules

Page 56: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Modules in Python Python applications are separated

into modules These module represent just a list of

functions and/or classes To use all functions from a module numeralSystems:

import numeralSystemsprint(numeralSystems.toBin(1023))print(numeralSystems.toHex(1023))

from numeralSystems import toBin as bin

A single function:

Or some functions

from numeralSystems import toBin as bin, toHex as hex

Page 57: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Modules in PythonLive Demo

Page 58: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Object-oriented Programming

With Python

Page 59: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Object-oriented Programming with

Python Python is an object-oriented language Support for classes, inheritance,

method overloading, etc… To create a class:

Use the keyword class Give the class a name Define __init__ method and other

methods Attributes (fields) are defined inside

the contructor (__init__) methodclass Presentation: def __init__(self, title, duration): self.title = title self.duration = duration

Page 60: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Creating Classes with Python

Live Demo

Page 61: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Properties in Python Python has a concept for providing

properties for class attributes Properties are used for data hiding

and validation of the input valuesclass Presentation: def __init__(self, title, duration): self.title = title self.duration = duration @property def duration(self): return self._duration @duration.setter def duration(self, value): if(0 < duration and duration <= 4): self._duration = value

Page 62: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Classes with Properties

Live Demo

Page 63: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Instance methods

Instance methods are methods that are used on a concrete instance of the class

To create an instance method, provide self as first parameter to the method:class Trainer(Person): # … def deliver(self, presentation): print("{0} is delivering presentation about {1}" .format(self.name, presentation.title))

Page 64: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Instance methods

Instance methods are methods that are used on a concrete instance of the class

To create an instance method, provide self as first parameter to the method:class Trainer(Person): # … def deliver(self, presentation): print("{0} is delivering presentation about {1}" .format(self.name, presentation.title))

self is like this for other

languages

Page 65: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Instance MethodsLive Demo

Page 66: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Class Methods Class methods are shared between all instances of the class, and other objects They are used on the class, instead

of on concrete object

Defined as regular functions But inside the class

Without self as parameterclass Person: # … def validate_person_age(age): return 0 < age and age < 150

Page 67: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Class MethodsLive Demo

Page 68: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Class Inheritance in Python

Extend classes

Page 69: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Class Inheritance in Python

Class inheritance is the process of creating a class that extends the state and behavior of other class Functions and attributes are inherited New functions and attributes can be

addedclass Person: def __init__(self, name, age): self.name = name self.age = age

class Trainer(Person): def __init__(self, name, age, speciality): super().__init__(name, age) self.speciality = speciality def deliver(self, presentation): print("{0} is delivering presentation about {1}" .format(self.name, presentation.title))

Page 70: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Class Inheritance in Python

Class inheritance is the process of creating a class that extends the state and behavior of other class Functions and attributes are inherited New functions and attributes can be

addedclass Person: def __init__(self, name, age): self.name = name self.age = age

class Trainer(Person): def __init__(self, name, age, speciality): super().__init__(name, age) self.speciality = speciality def deliver(self, presentation): print("{0} is delivering presentation about {1}" .format(self.name, presentation.title))

Trainer inherits Person

Page 71: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Class Inheritance in Python

Class inheritance is the process of creating a class that extends the state and behavior of other class Functions and attributes are inherited New functions and attributes can be

addedclass Person: def __init__(self, name, age): self.name = name self.age = age

class Trainer(Person): def __init__(self, name, age, speciality): super().__init__(name, age) self.speciality = speciality def deliver(self, presentation): print("{0} is delivering presentation about {1}" .format(self.name, presentation.title))

super() calls the

parent

Page 72: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Class Inheritance in PythonLive Demo

Page 73: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Best PracticesHow to write readable Python code?

Page 74: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

Best Practices Use 4-space indentation, and no tabs Wrap lines so that they don’t exceed 79

characters Use blank lines to separate functions

and classes Use docstrings Use spaces around operators and after

commas Name your classes and functions

consistently

PascalCase for classes

lower_case_with_underscores for functions and methods

Page 75: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

The Zen of Python

Page 76: Installation, Data types, Control flow structures, Loops, Functions, Strings, OOP, Data Structures, Tuples, Destructuring Assignments Telerik Academy Plus

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

Python Overview

http://academy.telerik.com