Operating System logos: Apple OS, Linux, Windows, ios, Android, BSD Unix. Legal fair use: http://smallbusiness.chron.com/fair-use-logos-2152.html Ort Braude College Logo


Electronic and Electrical Engineering Department

Site owner: Samy Zafrany


line separator


Hebrew sylabus

line separator


The course slides are prepared during this semester and are subject to many updates and modifications, so it is not advised to print them at this early stage.

line separator


  1. C/C++ Programming Languages: Daniel Geva Web Sites
    This is the official 31616 course web site of the C/C++ programming languages (owned by Daniel Geva). Most of the Python Data Structures and algorithms are implemented in the C programiing language, and therefore we will occasinally see C programs that explain how a specific data structure was implemented, or how a specific algorithm was made to run fast by writing it in C. So if you haven't practicing C code lately, please visit this course and refresh your C skills soon!
  2. Python Programming Environment
    We will be using the Python Programming Language for many course assignments and projects

    since it is ideal for expressing algorithmic ideas just like a pseudo language and at the same time it also runs the algorithms (unlike a pseudo language which is descriptive but cannot run). The link above contains tutorials, books, and software downloads that we need for our course. Please visit this page soon to get acquainted with the Python programming language: we expect the students to be able to learn most of what we need from this language by themselves, as we will not have time to cover all the aspects of the language.
    Click here for software installation
  3. We will also use Java and C# as examples of pure object oriented programming languages. Please be prepare to install the JDK (Java Development Kit) and Java Runtime Environments. For C# we will be using the collge Visual Studio Installations.

line separator

Tutorials and Links

  1. Object-Oriented Design with Python (University of Colorado)
  2. Introduction to Object Oriented Programming Concepts (OOP) and More
  3. Object Oriented Programming
  4. Generator Tricks For Systems Programmers
  5. Python 3 Tutorial: 19 - Classes
  6. The best way to learn python part 5: Object-oriented programming
  7. Practical UML (Unified Modelling Language) - A Hands-On Introduction for Developers
  8. UML Class Diagrams

line separator


Project 1: Python Programming

Project 1: Solutions

Project 2: Python Programming

Project 3: Classes and Objects

Test driven design: The Student class example we did in class

Project 4: Blackjack - OOA, OOD, and OOP in one game

This is just the first draft, and there maybe some more slides (UML) and some small changes. But please get started by reading and thinking (and coding your ideas). This is a must project for really understanding the OOA, OOD, and OOP processes! So get started!! We will discuss this project in our next lab.


Final Course Project 1: Sudoku

Solver Hint: pseudo code for the backtracking algorithm

Final Course Project 2: Poker

Work in progress ...

Review Problems

Review Problems toward the final exam

line separator


line separator

Kernighan's Law: Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.