This is a course in programming in C. No prior programming experience is assumed; however, mathematical maturity at the level of a second year science or engineering undergraduate is assumed.We emphasize solving problems using the language, and introduce standard programming techniques like alternation, iteration and recursion. We will briefly glimpse the basics of software engineering practices like modularization, commenting, and naming conventions which help in collaborating and programming in teams.Given a problem, we pay attention to the following questions:What is an algorithmic solution to the problem?How do we translate the algorithm into C code?How efficient is the code?How maintainable is the code?It is expected that by the end of the course, students will be comfortable in :-Attempting algorithmic solutions to problemsDesigning and coding moderate sized programs running to the order of a few hundred lines of code, andReading, understanding and modifying code written by others.INTENDED AUDIENCE: Any interested learners.PREREQUISITES: No prior programming required; mathematical maturity of a second level UG student in science or engineering.
Week 1: Introduction. Straight-Line Code. Variables, Operators, Expressions and Conditionals.Week 2: LoopsWeek 3: FunctionsWeek 4: One-Dimensional Arrays and PointersWeek 5: RecursionWeek 6: Multi-dimensional Arrays, Linked Lists.Week 7: Operating on FilesWeek 8: Organizing C projects, working with multiple source directories, makefiles.