Announcement 3: Final Semester Grades

The following figure is the histogram of the grand total grade for this course.

Lecture 11: Python advanced topics - decorators and classes

This lecture discusses some further important topics in Python: Decorators and Classes. Pyton Decorators In simple words, Python decorators are functions that can modify (e.g., add to) the functionalities of other functions. As will be described below, decorators are particularly...

Lecture 10: Python advanced topics - IO, Monte Carlo, wrappers and interoperability

This lecture discusses some further important topics in Python IO, the use of random numbers and Monte Carlo simulations, as well as methods of integrating Python codes with codes from other programming languages, in particular, the use of Python as...

Lecture 9: Python - array computing and plotting

This lecture focuses on array computing and code vectorization, as well as methods of plotting data in Python. Vectorization and array computing With regards to capabilities of Python for scientific calculations, there are conflicting opinions. On the scientific side of...

Lecture 8: Python - I/O, error handling, and testing frameworks

This lecture further explains topics on Input/Output processes and error handling in Python, as well as methods of testing the accuracy and robustness of your code. I/o (continued) So far in this course, we have indirectly discussed several methods of...

Lecture 7: Python - modules, loops, and I/O

This lecture explains modules, loops, with a brief introduction to Input/Output processes in Python. Ideally, modules should have been part of the previous lecture (with Python functions). The split was however necessary to reduce the size of lecture 6 to...

Lecture 6: Python - branching and functions

This lecture explains branching statements, how to define functions in Python, and all other important details of functions in Python. Branching in Python Consider the last problem in homework 4, where we defined a dictionary of people names and their...

Lecture 5: Python - variables and assignment statements

This lecture further explains different types of variables in Python, branching statements, how to define functions, and what Python modules are. Programming glossary The following table summarizes some of the important keywords in this lecture for you. Table 1. Some...

Lecture 4: Python - values, variables, and types

This lecture aims at guiding you to understand the how to of programming, difference between programming languages and the natural languages, the type of programming errors and the meaning code debugging how to perform simple arithmetic operations on the Python...

Lecture 3: Python for beginners

This lecture aims at providing an introduction to Python programming for beginners, how to install it, different Python distributoins available, how to write Jupyter notebooks, and how to perform simple arithmetic operations with Python. Python: a brief history Python was...

Announcement 2: Course Progress Evaluation

The goal of this survey is to assess your progress so far in this class, and to make improvements for the rest of the semester. I rely on your answers and comments to plan for the rest of the semester,...

Lecture 2: Advanced Git concepts

This lecture aims at providing a brief review of some advanced topics in Git Version Control System which are essential for effective management of large collaborative projects. A useful Git-cheatsheet link for future reference: Advanced Git cheatsheet Getting help for...

Lecture 1: A professional programmer uses Version Control System (VCS)

This lecture aims at providing a brief review of Version Control Systems, why they are needed, how they work, and the most prominent and popular version control software that are available today for professional collaborative programming. Some useful links for...

Lecture 0: Programming history

This lecture aims at providing a brief history of the development of computers and computer programming languages and their mutual interaction with rapid developments in natural sciences in the 20th century. The rise of the machines Immediately after the first...

Announcement 1: Assessing your programming knowledge and interests

The goal of this survey is to assess your prior programming experience and to identify the favorite programming language of the class. Please fill out the following two survey questions, and submit them within 3 minutes. Survey results The following...

Announcement 0: Student-professor connection day

I have ordered cookies to be delivered to our first ECL class. We will try to get to know each other and I will attempt to describe my research work and educational background for you, as well as what we...