Discrete Structures 1

CSI141 Programming Principles



 "Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions"- [Allen Downey].



Computer Science is no more just about computers than astronomy is about  telescopes or biology is about microscopes. These are tools, there is more, computer science is fundamentally about problem solving,-Thinking computationaly, the ability to formulate and understand problems,decomposition, recognising patterns, abstraction, thinking creatively about solutions, algorithm design, and to express a solution clearly and accurately in algorithms that can then be coded in a programming language of a defined syntax and semantics and executed on a programmable machine- a computer.  The process of learning to program is an excellent opportunity to practice these problem-solving skills.



Course Synopsis

This is an introductory course aimed at first year undergraduates with little or no prior programming experience.The course introduces notions of computation, problem solving (Decomposition, Abstraction, algorithm design), programmable machines, programming languages, basic notions of language syntax and semantics and introduces Python, an interpreted programming language and uses it in example exercises primarily in domain scientific computations.

Students will develop the ability to logically plan and develop programs, and to learn to write, test, and debug programs. Students will apply their knowledge through hands-on programming exercises. Students are strongly encourage to do python hands on tutorals, write programs and try programs from the book and elsewhere to gain experience. It is NOT sufficient just to read the book and lecture notes


Learning Outcome:


Interpret simple problem specifications and apply the appropriate primitive data types, imperative control structures  in the design and development of solutions in a programming language Python.



Learning Outcome (Decoded)

Computational Thinking, Problem solving and  introduction to programming using Python programming language.



Course Overview:

• Overview of Problem Solving
• The programming process
• High level Languages
• Input/output
• Control Structures
• Functions
• Libraries
• Files and Streams
• Simple data structures
• Practical problem solving exercises

Assessment and Evaluation Criteria

  • Exam to CA ratio is 50-50, so your final grade is a weighted sum of your examination mark and your CA mark with equal weight. 
  • The CA is a weighted sum of labwork, homework, quizes, assignments and tests. The weightng will reflect relative effort involved in each. Quizzes are announced at least one day in advance and number of questions may vary , and  may be in any format.


CSI161 Introduction to Computing