I719 Fundamentals of Python: Difference between revisions

From ICO wiki
Jump to navigationJump to search
(lecture 4; add exam example)
(add lecture 5)
Line 41: Line 41:


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.
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.


=== Example problem ===
=== Example problem ===
Line 129: Line 131:


recordings are found here: https://echo360.e-ope.ee/ess/portal/section/fc0c6bfd-9187-4365-b2c9-0085b3a89906
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


== Lecture 1 ==
== Lecture 1 ==
Line 152: Line 158:
== Lecture 5 ==
== Lecture 5 ==


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


survey https://docs.google.com/forms/d/e/1FAIpQLSeCu0boQIBbRsCcgLovm0Jis3JLYnjD8JhCBlh4nQUPpF6N1Q/viewform
https://docs.google.com/forms/d/e/1FAIpQLSeCu0boQIBbRsCcgLovm0Jis3JLYnjD8JhCBlh4nQUPpF6N1Q/viewform

Revision as of 16:22, 4 March 2017

About

This class is python for beginners, taugh 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.

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

python -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')

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.

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

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

Lecture 1

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

Lecture 2

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

Lecture 3

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

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

Lecture 5

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

survey

https://docs.google.com/forms/d/e/1FAIpQLSeCu0boQIBbRsCcgLovm0Jis3JLYnjD8JhCBlh4nQUPpF6N1Q/viewform