I would recommend the following two books: Learn Python The Hard Way How to Think Like a Computer Scientist Both will teach you the basics and some of OOP stuff.
I no longer recommend Learn Python the Hard Way. I don't want to get in an argument about it with anyone, but I think there are significantly better resources now. Here's a pretty great list of...
I no longer recommend Learn Python the Hard Way. I don't want to get in an argument about it with anyone, but I think there are significantly better resources now.
These books might be a bit too basic for you, but some of the later chapters might be useful (and I think they're framed in a little more useful/interesting way than a lot of books): Invent Your...
These books might be a bit too basic for you, but some of the later chapters might be useful (and I think they're framed in a little more useful/interesting way than a lot of books):
I want to second Automate the Boring Stuff.... It's light on CS topics like data structures, but it's great for hands on practical things like moving around files or scraping the screen or sending...
I want to second Automate the Boring Stuff.... It's light on CS topics like data structures, but it's great for hands on practical things like moving around files or scraping the screen or sending emails. It covers what your tuples and lambdas actually do.
I run a website of free learning resources that has a section on programming and computers. Check out https://www.zencyclopedia.org/#computers-electronics.
Hi OP, I know quite a few people who have achieved very good grades on their Year 13 project, and they all tell me the same thing - your ability to write high quality software has very little...
Hi OP,
I know quite a few people who have achieved very good grades on their Year 13 project, and they all tell me the same thing - your ability to write high quality software has very little bearing on how well you will do in your coursework. My advice is to be cynical and even a bit jaded from the outset, treat the whole project like the box-ticking exercise that it is, and make sure that there's no ambiguity as to whether you fullfil the various criteria to get the marks.
That said, learning to program well will serve you excellently in your future studies (and indeed in general), assuming you intend to do CS at University. I've been through the CS application process in the past year, so I'm probably fairly well positioned to answer any questions you have about the university application process - please don't hesitate to ask me, either here or via PM!
As for learning intermediate and advanced Python - there's no good substitute for keyboard-time; that is, time spent writing programs and learning from your own experiences. Below are some ideas for interesting projects which will hopefully extend your abilities. I've given each a very rough difficulty rating - don't pay it too much attention :)
Implement a classic arcade game like snake or pong in a library such as pygame. Research game programming concepts such as the event loop (main loop) and callback functions / listeners [3/10]
Write a command line utility to achieve a simple task of your chosing. Add support for more complex forms of program input, like command line flags or the ability to take input from either a file or standard input (stdin). [3/10]
Use a library like Flask or CherryPy to create a simple website or web service [4/10]
Write a program that utilises more complex python features like metaclasses or custom decorators [5/10]
Investigate Python type annotations, including tools like mypy, and consider the benefits and drawbacks of programming languages that use type checking [5/10]
Implement a classic algorithm like QuickSort. Try using both imperative and functional styles and consider the benefits and drawbacks of each. Compare performance with a benchmarking tool like timeit, and think about (or research) how the performance of the algorithm could be improved if you could make assumptions about the input data [6/10]
Write a recursive descent parser and interpreter for a simple imperative language [8/10]
Finally - be curious, and study things that interest you. Use the summer to your advantage. If you can point to something that you've studied or implemented that's captured your imagination when writing your UCAS statement, it'll give you an advantage. If you intend to apply to Oxbridge and anticipate having to sit an academic interview, it'll be even more advantageous to be able to demonstrate passion for the subject.
If you want to book open days, you need to do that sooner rather than later. Don't put it off and then end up pulling your hair out trying to determine where you want to spend the next four years...
Thank you for your advice on university, I've been (probably stupidly) pushing it to the back of my mind because it seems quite overwhelming.
If you want to book open days, you need to do that sooner rather than later. Don't put it off and then end up pulling your hair out trying to determine where you want to spend the next four years of your life on the basis of google images!
I would recommend the following two books:
Both will teach you the basics and some of OOP stuff.
Full Stack Python is quite good for an online resource as well... though some of it is a bit dated now.
I no longer recommend Learn Python the Hard Way. I don't want to get in an argument about it with anyone, but I think there are significantly better resources now.
Here's a pretty great list of resources: https://www.reddit.com/r/learnpython/wiki/index
I'd start here if you're into programming: https://github.com/JeffPaine/beautiful_idiomatic_python
There are also a number of videos on Udemy Tech's channel on YouTube that are a good place to start.
These books might be a bit too basic for you, but some of the later chapters might be useful (and I think they're framed in a little more useful/interesting way than a lot of books):
I want to second Automate the Boring Stuff.... It's light on CS topics like data structures, but it's great for hands on practical things like moving around files or scraping the screen or sending emails. It covers what your tuples and lambdas actually do.
I run a website of free learning resources that has a section on programming and computers. Check out https://www.zencyclopedia.org/#computers-electronics.
Very cool resource! Bookmarked for further use in the future
Hi OP,
I know quite a few people who have achieved very good grades on their Year 13 project, and they all tell me the same thing - your ability to write high quality software has very little bearing on how well you will do in your coursework. My advice is to be cynical and even a bit jaded from the outset, treat the whole project like the box-ticking exercise that it is, and make sure that there's no ambiguity as to whether you fullfil the various criteria to get the marks.
That said, learning to program well will serve you excellently in your future studies (and indeed in general), assuming you intend to do CS at University. I've been through the CS application process in the past year, so I'm probably fairly well positioned to answer any questions you have about the university application process - please don't hesitate to ask me, either here or via PM!
As for learning intermediate and advanced Python - there's no good substitute for keyboard-time; that is, time spent writing programs and learning from your own experiences. Below are some ideas for interesting projects which will hopefully extend your abilities. I've given each a very rough difficulty rating - don't pay it too much attention :)
Implement a classic arcade game like snake or pong in a library such as
pygame
. Research game programming concepts such as the event loop (main loop) and callback functions / listeners [3/10]Write a command line utility to achieve a simple task of your chosing. Add support for more complex forms of program input, like command line flags or the ability to take input from either a file or standard input (stdin). [3/10]
Use a library like Flask or CherryPy to create a simple website or web service [4/10]
Write a program that utilises more complex python features like metaclasses or custom decorators [5/10]
Investigate Python type annotations, including tools like
mypy
, and consider the benefits and drawbacks of programming languages that use type checking [5/10]Implement a classic algorithm like QuickSort. Try using both imperative and functional styles and consider the benefits and drawbacks of each. Compare performance with a benchmarking tool like
timeit
, and think about (or research) how the performance of the algorithm could be improved if you could make assumptions about the input data [6/10]Write a recursive descent parser and interpreter for a simple imperative language [8/10]
Finally - be curious, and study things that interest you. Use the summer to your advantage. If you can point to something that you've studied or implemented that's captured your imagination when writing your UCAS statement, it'll give you an advantage. If you intend to apply to Oxbridge and anticipate having to sit an academic interview, it'll be even more advantageous to be able to demonstrate passion for the subject.
If you want to book open days, you need to do that sooner rather than later. Don't put it off and then end up pulling your hair out trying to determine where you want to spend the next four years of your life on the basis of google images!
Well, Computer Science (G400) is broad enough to allow specialisation into a variety of fields and has excellent employability prospects.