Introduction to problem solving with computers using a modern language such as Java or C/C++ or Python.
Introduction to programming basics: conditional statements, loops, simple data structures, inputs & outputs.
Creation and manipulation of data structures: arrays, lists, etc. File reading and writing, working with data. Dynamic aspects of operations on data, analysis of algorithms. User interface and interactions.
Implementation of various algorithms, including searching, sorting, computational analysis, graphs & networks, and recursive algorithms .
Testing and Debugging, Notions of algorithmic complexity.
References
John Zelle (2016) Python Programming an Introduction to computer science, 3rd edition, Franklin, Beedle Publishers
John V. Guttag (2016) Introduction to Computation and Programming Using Python – with Application to Understanding Data, 2nd edition, The MIT Press
G. L. Heileman (2002) Data Structures Algorithms and Object Oriented Programming, Tata Mcgraw Hill.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein (2003) Introduction to Algorithms and Java, 2nd edition, McGraw-Hill.