
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
This course aims teach how to think about programs, not just a programming language. Let us start the course by listening to what the man who brought us the iPhone, Steve Jobs, has to say on programming. This will set the theme for the course.
This lesson teaches you to write your very first tiny program right away, in a couple of minutes!
This lesson teaches how to save your program in a file on pythonanywhere.com, and how to share your program with others.
It encourages you to start sharing your program with your friends, to get their praise and feedback. The praise will keep you going, the feedback will let you constantly evolve your program into something that others and you will find useful and actually use.
This lesson teaches the maintenance of a feature list: the list of updates to be done to the program.
This lesson teaches program maintenance: keeping the program readable using comments; saving the different versions the program evolves through; etc.
This lesson teaches how to let the user control the speed of output of the program. It teaches how to wait for and accept a simple <ENTER> key tap from the user.
This lesson teaches some basics of User Interface design: always keep the user updated about what the program is doing; keep the program output readable; etc.
The lessons also teaches the importance of testing every change to the program: very basic unit testing and regression testing.
for the current run (execution) of the program, and print it back out.
This lectures teaches the separation of program and data. Data (the reminders) are stored in a separate file, and the program (the planner) processes the data (the reminders), reading them in from the reminders file, printing them to the user, and writing them out to the reminders file.
You will learn about using the Python "while" command.
You will learn to first create a User Interface mock-up of the program feature before actually writing the program code to implement the feature.
In this lecture you will learn about:
In this lecture you will learn about:
This gives you a great introduction to timelines! Watch the assignment lecture that has been uploaded as a resource (Lec12-movie-assignment.mp4) and then watch the YouTube movie clip that has been linked to as an external resource for this lecture.
Don't miss the movie clip!
In this lecture you will learn about:
In this lecture you will learn:
In this lecture you will learn:
In this lecture you will:
In this lecture you will learn:
In this lecture you will learn:
In this lecture you will learn:
In this brief lecture you will learn about "working directories".
Maintain the different versions of your program in an easier and more professional way, using the software tool "Git".
A practical example of using a few basic Git commands to maintain versions of a simple text file on your computer.
Learn how to use Git both from within Pycharm and from a regular window/terminal but in conjunction with Pycharm.
Learn how to make the git commands and their options meaningful to yourself and relatable to the git mental model taught in the course, by assigning meaningful aliases to the git commands.
Now that we have picked up two useful tools, PyCharm and Git, we will use them to evolve our planner to version v1.2.3.2 in a much easier manner.
In true Agile methodology style, decide on the next feature you want to add to your program, and put that on your priority list called "Backlog".
In this lecture you will learn about "functions" which help modularize your program.
You will learn about passing to a Python function something for it to work with: those things are called "arguments". Another term for "argument" in programming is "parameter". You will not only learn about defining and using functions that take arguments, but also learn the difference between a positional argument and a keyword argument in Python.
You will experience how a function that takes arguments can be used in more places in the program and hence helps make the program more modular and reduces your programming work.
In this lecture you will go through the process of first creating a mock-up of the User Interface and then designing the code changes before actually upgrading your program code to implement a new feature.
In this lecture you will learn how to get the program to stop at a particular statement so that from there you can get it to execute step by step, one statement at a time, and figure out why the program is going wrong.
Let us maintain the reminders as a list within the program, after reading them in from the reminders file, so that we can access individual reminders in any order we like, any number of times.
In this lecture we take a small detour to fix a user-interface bug wherein the option Q to quit the program was not being handled as desirable in the "view reminders" phase of the program.
In this lecture you will incorporate the Python list data-structure into the planner. You will also learn how to return multiple items from a function, and how to use them.
In this lecture you will learn that there are many more things you can do with Python lists, and you will learn where to find information about all the supported list operations.
In this lecture we will specify as well as see a mock-up of two new planner features: (i) 'p': go to the previous reminder, and (ii) 'g <number>': go to the specified reminder number.
In this lecture we will implement the two new planner features we specified in the previous lecture: (i)'p': go to the previous reminder, and (ii) 'g <number>': go to the specified reminder number. You will learn how to access elements of a list, and you will learn about extracting parts of a string.
Learn how to use the Local History feature of PyCharm. Local History is different from Git or other VCS.
In this lecture you will learn how to easily delete items from a Python list.
You will see for the first time that variable names have different visibilities within and outside functions in a simple, single-file Python program.
You will learn the basic rules of scope for variable names in Python: in what parts of the program is a variable name visible?
You will learn about how parameters passed to functions work: their scope.
You will reorganize (i.e., refactor) the planner such that the index into the reminders list is modified only within the set of functions associated with the reminders list, that too without passing the index as a parameter to the functions. You will also learn how to convert a piece of code into a function automatically in PyCharm.
You will learn about parameters-by-reference: how to return the work of a function through one of its parameters, instead of as return values.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Steve Jobs, the man who brought us the iPhone said:
"I think every body in this country should learn how to program a computer.. should learn a computer language... because it teaches you how to think."
"I view computer science as a liberal art. It should be something that everybody learns... takes a year in their lives.. one of the courses they take is .. learning how to program." [ -- Steve Jobs: The Lost Interview, 1995]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
This course teaches you how to think, about computer programs; it doesn't just teach you a programming language.
Along the way, want to learn programming? Eager to become a software engineer? How about learning the basics of the world's hottest programming language Python, wildly popular software engineering tools, and excellent programming methodology?
This hands-on, continuously evolving course that will grow to have 20+ hours of screen-cast programming-session recordings will teach you -- a novice -- how to create useful computer programs that people can use, and how to continually upgrade your programs with new features based on user requirements. In fact, you will build and evolve your own program, "myPlanner", during the course, alongside evolving your programming skills. Read the storyline of the program's evolution in the resources section of the very first lecture or the "Future Lectures!" section, both of which are available for free preview.
The Python programming language is ranked as the hottest programming language on the planet right now. (Search the internet for "Python popularity" and see for yourself!) Python is also a popular platform for the wildly in-demand programming job of data scientist. This course teaches Python and how to use it in a professional manner.
Software engineering tools such as Integrated Development Environments and Version Control Systems, program development methodologies such as Agile, and programming skills such as requirement specification, top-down design, object-oriented design, and software testing are essential requirements for a software engineer. This course teaches the basics of all these tools, methodologies, and skills.
The attraction of this course is that it is designed to help you learn the basics of all the above in a natural and easy manner by taking you on a guided tour of evolving your own computer program. At each stage of your program's evolution you will learn the necessary tools, processes, and methodologies just exactly when you need them, thus building in your mind a nice, complete and memorable storyline of all the things you learn.
This holistic course is a combination of two courses that are often taught separately: a programming language course and a software engineering course. Each video lecture is a programming session captured on screen rather than a talking head and power-point slides, and downloadable for every lecture is the fully working program developed in that lecture!
Here are some of the highly marketable skills you will acquire from this course:
Python programming language
Agile Methodolgy
Requirements specification
Top-down Program design
Flowcharts
Object-Oriented Programming (OOP)
Software Testing
PyCharm IDE (Integrated Development Environment)
GIT Version Control System
User Interface (UI) design
etc., etc., etc.
So, hop on board, join the class and become a software engineer!
Target Audience:
You want to become a professional programmer but have no prior programming background
You want to learn the Python programming language and the basics of software engineering
You want to re-learn programming in a better way
Skills Needed:
You already have or are willing to develop the habits of precise, logical, and systematic thinking and expression, being organized in your work, and persistence and patience. This course will not only make you a very good beginning programmer, but also perhaps make your approach to all other work as well more methodical.
Course Mechanics:
In the very first lecture you will build your very first program, and with each subsequent lecture you will grow your program organically into something bigger, along the way learning all the different tools, methods, processes and methodologies required.
Thus, you will pickup the basics of all the different skills needed towards becoming a professional programmer, not just a particular programming language. Just as becoming a good writer involves much more than learning English grammar and vocabulary, becoming a good programmer involves much more than just learning a programming language. This course will start you on the path to becoming a good programmer.
As you progress in the course, not only will you have your own working Planner program that you can show off to your friends, but also you will grow a beginner programmer skill set of the most in-demand things in the software industry.
Additional Course Lectures:
This course provides you a unique opportunity to shape the lectures to your benefit. The course has been seeded with an initial 20 lectures, and at least as many more lectures are in preparation and will be added to the course in the near future. These latter lectures will take into account all student feedback on the initial seed lectures. Such development of any product, based on user feedback and involving many releases/upgrades, is referred to as Agile Product Development, a methodology that is taught in this course. Your feedback will shape not only what is taught next but also how it is taught. The earlier you join the course and the more feedback you give, the more you can shape this course to your liking!
Course Outcomes:
Computer programming is not just about learning a programming language. In this course you will learn in an easy, enjoyable, and motivating manner how to develop working software programs, that is, the basics of Software Engineering. You will be learning the Python programming language along the way.