I719 Fundamentals of Python: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
= About =
= About =


This class is python for beginners, taugh Spring 2017
This class is python for beginners, taught Spring 2017


== Contact ==
== Contact ==


My email is [mailto:eroman@itcollege.ee eroman@itcollege.ee]
My email is eroman@itcollege.ee


= Frequently Asked Questions =
= Frequently Asked Questions =
Line 46: Line 46:
=== Test dates ===
=== Test dates ===


Primary date: Thursday March 23rd, starting at 8:15AM
Primary date: Thursday March 23rd, starting at 8:15AM Primary date for class 2: May 25th, starting at 8:15AM


Makeup date 1: in june, TBA
Makeup date 1: 01.06.2017 10:00-11:30 410


Makeup date 2: in august, TBA
Makeup date 2: 07.06.2017 12:00-13:30 410


=== Test topics ===
=== Test topics ===
Line 59: Line 59:
** see https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lists
** see https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lists
* for loops
* for loops
* builtin functions like `len` and `range`
* basic string manipulation
* basic string manipulation


Line 81: Line 82:
=== Example solution ===
=== Example solution ===


<code>python -m unittest exam.py</code>
<code>python3 -m unittest exam.py</code>


<source lang="python">from unittest import TestCase
<source lang="python">from unittest import TestCase
Line 105: Line 106:


https://gist.github.com/evrom/4f8158b2613cb80c5050e7315fa309cc
https://gist.github.com/evrom/4f8158b2613cb80c5050e7315fa309cc
=== Real Test for 23/03/17 ===
https://gist.github.com/evrom/d948b56afe9a41aa2c18b8a3094eddad
Example solutions:
https://gist.github.com/evrom/3f0f4e8289af6230000cfbfeefed5826
=== Real Test for 25/05/17 ===
https://gist.github.com/evrom/50b884d419c18ad9235fc741bf9fd490
Example solutions:
https://gist.github.com/evrom/740f3d8bf98469aebffc0d25cc8db856
=== Real Test for 01/06/17 ===
https://gist.github.com/evrom/4bd7d28bceeb0ef939b5d6392b1e50ab
=== Real Test for 07/06/17 ===
https://gist.github.com/evrom/b16e644fbd31ff1dabbd89c5dc281ee6


== Project due date ==
== Project due date ==


The project is due the class before the last class (March 16th). You may submit your project before then, and I will check it. If It does not meet the requirements, I will give you feedback.
Git Repo with Readme, before 6th class
 
Completed project, 7th class


== Project Requirements ==
== Project Requirements ==
Line 118: Line 145:
* it has a relevant unit test
* it has a relevant unit test
* it has a README that describes what it does and how to run it.
* it has a README that describes what it does and how to run it.


== Project idea examples ==
== Project idea examples ==
Line 153: Line 181:
include a <code>.gitignore</code> file in the root directory of your project. This will prevent <code>.pyc</code> and <code>__pycache__</code> from being added to your git project.
include a <code>.gitignore</code> file in the root directory of your project. This will prevent <code>.pyc</code> and <code>__pycache__</code> from being added to your git project.


You can save this file as <code>.gitignore</code>:<br />
You can save this file as <code>.gitignore</code>: https://github.com/github/gitignore/blob/master/Python.gitignore
https://github.com/github/gitignore/blob/master/Python.gitignore


= Lecture Notes =
= Lecture Notes =
Line 165: Line 192:


https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/testing
https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/testing
Interpreting test results
https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/test_results


== Lecture 1 ==
== Lecture 1 ==
Running python, integers, booleans, strings, lists, <code>for</code> and <code>if</code>, functions https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture1v2
Old lecture notes:


Basic types, lists, for-loops, functions, imports and classes https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture1
Basic types, lists, for-loops, functions, imports and classes https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture1


== Lecture 2 ==
== Lecture 2 ==
Dictionaries, importable modules, classes
https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture2v2
Old lecture notes:


importable modules, unit tests, dictionaries https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture2
importable modules, unit tests, dictionaries https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture2


== Lecture 3 ==
== Lecture 3 ==
Console input, exceptions, unit testing, command line arguments, opening files
https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture3v3
Old version:


Command line arguements, opening and using files, csv files https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture3
Command line arguements, opening and using files, csv files https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture3
Line 183: Line 230:


== Lecture 4 ==
== Lecture 4 ==
Making a basic dynamic website https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture4v2
Old version:


Exceptions, slices, Http request to get JSON data, Basic dynamic website https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture4
Exceptions, slices, Http request to get JSON data, Basic dynamic website https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture4


== Lecture 5 ==
== Lecture 5 ==
datetime, csv files
https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture5v2
Old version:


Advanced testing, datetime, python style guide. https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture5
Advanced testing, datetime, python style guide. https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture5


=== survey ===
== Lecture 6 ==


https://docs.google.com/forms/d/e/1FAIpQLSeCu0boQIBbRsCcgLovm0Jis3JLYnjD8JhCBlh4nQUPpF6N1Q/viewform
List and Dictionary transformations and manipulations. Intro to numpy with linear algebra and intro to pandas with extracting data from a csv. https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture6


== Lecture 6 ==
== Lecture 7 ==
 
Reduce function, using break and return for control flow, handling user input, handling errors


List and Dictionary transformations and manipulations. Intro to numpy with linear algebra and intro to pandas with extracting data from a csv.<br />
https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture7
https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture6

Latest revision as of 11:01, 7 June 2017

About

This class is python for beginners, taught Spring 2017

Contact

My email is eroman@itcollege.ee

Frequently Asked Questions

What should I know already

It would be good to know:

  • How to use the unix command line
  • GIT

What editor/IDE should I use?

Whatever you want! I recommend learning emacs or vim. If you do not know how to use any specific editor and do not want to learn one now, then use spyder for writing python.

What python version are we using?

I will teach using python 3

What books/resources do you recommend?

This page contains most of python's syntax: https://learnxinyminutes.com/docs/python3/

What software do I need to install?

You only need python 3 and an editor.

I recommend that you install an interactive python shell, like IPython1 or bpython2

Grading

There will be a test on the last day. It is pass/fail. You may do a project instead of the test. I recommend this, since it will be more fun and you will learn more.

Test

The test will cover only builtin python types and only use the standard library. There will be 3 test dates. The format will be A series of unit test cases which you must write a function that will make the unit test pass.

You may use the internet during the exam.

Test dates

Primary date: Thursday March 23rd, starting at 8:15AM Primary date for class 2: May 25th, starting at 8:15AM

Makeup date 1: 01.06.2017 10:00-11:30 410

Makeup date 2: 07.06.2017 12:00-13:30 410

Test topics

Example problem

from unittest import TestCase


class StringCountTestCase(TestCase):
    """
    Write a function that for any string, prepends 'Hello '
    >>> test_function('Bob')
    'Hello Bob'
    """
    def setUp(self):
        self.test_function = None  # Assign to your function

    def test_sally(self):
        result = self.test_function('Sally')
        self.assertEqual(result, 'Hello Sally')

Example solution

python3 -m unittest exam.py

from unittest import TestCase

def prepend_hello(string):
    return "Hello {}".format(string)


class StringCountTestCase(TestCase):
    """
    Write a function that for any string, prepends 'Hello '
    >>> test_function('Bob')
    'Hello Bob'
    """
    def setUp(self):
        self.test_function = prepend_hello

    def test_sally(self):
        result = self.test_function('Sally')
        self.assertEqual(result, 'Hello Sally')

Practice Test

https://gist.github.com/evrom/4f8158b2613cb80c5050e7315fa309cc

Real Test for 23/03/17

https://gist.github.com/evrom/d948b56afe9a41aa2c18b8a3094eddad

Example solutions:

https://gist.github.com/evrom/3f0f4e8289af6230000cfbfeefed5826

Real Test for 25/05/17

https://gist.github.com/evrom/50b884d419c18ad9235fc741bf9fd490

Example solutions:

https://gist.github.com/evrom/740f3d8bf98469aebffc0d25cc8db856

Real Test for 01/06/17

https://gist.github.com/evrom/4bd7d28bceeb0ef939b5d6392b1e50ab

Real Test for 07/06/17

https://gist.github.com/evrom/b16e644fbd31ff1dabbd89c5dc281ee6

Project due date

Git Repo with Readme, before 6th class

Completed project, 7th class

Project Requirements

  • it can do something
  • it uses version control
    • it has more than one commit
    • it has commit messages that are relevant to the commit
  • it has a relevant unit test
  • it has a README that describes what it does and how to run it.


Project idea examples

  • a game
  • exploring a technology like image recognition
  • a command line tool that does something
  • a web application in python
    • Flask is simple and has good documentation for building a website
    • for a website that would require users to sign up and login, consider Django
  • a web scraper
  • many websites have HTTP APIs that can give you data, you can make something that uses data from public APIs.

If you want to do things with cryptography

  • a cryptographic chat app
  • a password storage bank like KeePassX

Can I ...?

Can I use python 2?

Yes

Can I use external libraries outside of the standard library?

Yes

If you use external libraries, include a requirements.txt or setup.py which has a list of packages required by your project

Project Tips

.gitignore

include a .gitignore file in the root directory of your project. This will prevent .pyc and __pycache__ from being added to your git project.

You can save this file as .gitignore: https://github.com/github/gitignore/blob/master/Python.gitignore

Lecture Notes

Recordings

recordings are found here: https://echo360.e-ope.ee/ess/portal/section/fc0c6bfd-9187-4365-b2c9-0085b3a89906

Testing Python Code

https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/testing

Interpreting test results

https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/test_results

Lecture 1

Running python, integers, booleans, strings, lists, for and if, functions https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture1v2

Old lecture notes:

Basic types, lists, for-loops, functions, imports and classes https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture1

Lecture 2

Dictionaries, importable modules, classes

https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture2v2

Old lecture notes:

importable modules, unit tests, dictionaries https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture2

Lecture 3

Console input, exceptions, unit testing, command line arguments, opening files

https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture3v3

Old version:

Command line arguements, opening and using files, csv files https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture3

Assets

file to count words in: http://pastebin.com/3faqcc5j csv file: https://docs.google.com/spreadsheets/d/1uSbHeppEyKNxF0WncvhxTBF8wj_co0v5XOYlXKLL8Lg/edit?usp=sharing

Lecture 4

Making a basic dynamic website https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture4v2

Old version:

Exceptions, slices, Http request to get JSON data, Basic dynamic website https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture4

Lecture 5

datetime, csv files

https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture5v2

Old version:

Advanced testing, datetime, python style guide. https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture5

Lecture 6

List and Dictionary transformations and manipulations. Intro to numpy with linear algebra and intro to pandas with extracting data from a csv. https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture6

Lecture 7

Reduce function, using break and return for control flow, handling user input, handling errors

https://wiki.itcollege.ee/index.php/I719_Fundamentals_of_Python/lecture7