CSD101: Introduction to Computing and Programming

Evaluation and Class material

Evaluation

Evaluation will be done based on:

20% - Labs.
25% - Quizzes including lab quizzes.
25% - Midsem exam - online.
30% - Endsem exam - online.


Semester schedule (lectures, quizzes, lab quizzes)

MonthDate
Aug.18, 21, 25, 28
Sep.1, 4, 8, 12, 15, 18(Quiz), 22, 25, 29
Oct.2(H), 6, 7-12(ME), 13(H), 16, 20, 23, 27, 30(Lab Quiz)
Nov.3, 6, 10, 13(Quiz), 17, 20, 24, 27(Lab Quiz)
Dec.1, 7-16(EE) Endsem slot: 9/12/21, 9.00am-12.30pm
Legend: H-Holiday, ME-Midsem Exam period, EE - Endsem Exam period

In Class

Some books that are useful for the course.
  1. BW Kernighan, DM Ritche, The C Programming Language (ANSI C), 2nd Ed.,Pearson, 1988.
  2. KN King, C Programming: A Modern Approach, 2nd Ed., WW Norton, 2008.
The video of each lecture will be available on BlackBoard.
A book reference is given by first authors's name from the list above.
  1. L1: Course logistics, about course, platform
    Source:
    Logistics, about course, CS 50 IDE
    Other references and links:
    CS 50 IDE link.
    Github.
    Course website.
  2. L2: Very Simple Computer (VSC)
    Source:
    Very Simple Computer
    Other references:
    Look at sections 1.1-1.4 and 2.1-2.3 Brookshear's book (there is a copy in the digital repository).
  3. L3: VSC contd.
    Source:
    VSC code examples
    Other references:
    Same as L2.
  4. L4: VSC examples, C beginnings
    Source:
    More VSC + C started
    Check out the recorded lecture on BB for VSC details.
    Other references:
    Download the VSC interpreter from BB and try running your VSC programs.
    Start reading Chps 1, 2, 3 Kernighan's book.
    Start reading Chps 1,2, 3 of King's book.
  5. L5: C - basics
    Source:
    Overview of basic C
    Code discussed in class
    Other references:
    See the reading recommendations for L4.
  6. L6: C - basics Overview
    Source:
    C overview - 8 constructs/features of C
    Code discussed in class
  7. L7: Operators, expressions
    Source:
    Arithmetic Operators
    Code discussed in class
    Other references:
    Kernighan secs 2.1-2.5, King chp 4.
  8. L8: More operators, esp. &, * ops
    Source:
    More Operators
    Code discussed in class
    Other references:
    King chp 4, sec 11.2, Kernighan 2.6-2.12, 5.1-5.3
  9. L9: break, continue, functions
    Source:
    break, continue functions
    Code discussed in class
    Other references:
    Kernighan secs 3.7 (also see 3.5, 3.6), 4.1, 4.2. King secs 6.4, 9.1-9.5
  10. L10: Switch
    Source:
    Switch statement
    Code discussed in class
    Other references:
    King sec 5.3. Kernighan sec 3.4
  11. L11: printf details
    Source:
    printf
    Code discussed in class
    Other references:
    Kernighan Appendix B - see library details for stdio.h, limits.h, floats.h
    King sec 22.3
  12. L12: scanf
    Source:
    scanf
    Code discussed in class(do what-if experiments with this code)
    Other references:
    King sec 22.3 (see details for C99 - most of these apply for gcc standard library).
    Kernighan see scanf description in Appendix B, stdio library.
  13. L13: Other I/O functions, strings
    Source:
    Character I/O, strings
    Code discussed in class
    Other references:
    Kernighan Appendix B stdio library.
    King chp 22.
  14. L14:Matrices, 2D arrays, Gauss Elimination
    Source:
    Matrices, 2D arrays, Gauss Elimination
    Code discussed in class
    Other references:
    Look at this Wikipedia entry on Gaussian elimination. The 3x3 example is from this entry.
  15. L15: Blocks, scope, properties of variables
    Source:
    Blocks, scope etc.
    Code discussed in class
    Other references:
    King chp 10, sec 18.2
    Kernighan secs 4.8, 4.4, 4.6, 4.3
  16. L16: Recursion
    Source:
    Recursion
    Code discussed in class
    Other references:
    King sec 9.6
  17. L17: Recursion: Quicksort, Mergesort
    Source:
    Quicksort, mergesort, basic complexity
    Code discussed in class
    Other references:
    Quicksort (Wikipedia page)
    Mergesort (Wikipedia page)
  18. L18: Complexity
    Source:
    Complexity
    This lecture was not recorded. The material will be reviewed in L19.
    Other references:
  19. L19: O() complexity, intro to pointers
    Source:
    O() complexity, pointers
    Code discussed in class
    Other references:
    Kernighan ch 5
    King chp 11
  20. L20: Pointers, structures
    Source:
    Pointers, structures
    Code discussed in class
    Other references:
    Kernighan chps 5, 6
    King Chps 11, 12, 16-1 to 16.3
  21. L21: Structures, dynamic memory, pointers
    Source:
    Structures, dynamic memory
    Code discussed in class
    Other references:
    Kernighan Chp 6, also see 8.7 and App. B-5 (stdlib)
    King Chps 16.1-16.3, 17.1-17.4
  22. L22: Linked structures, Stack, Queque
    Source:
    Linked structures
    Code discussed in class
    Other references:
    King 19.4
    Kernighan pp68-71 for an application of stack
  23. L23: Implementation of lists, Stacks, Queues
    Source:
    Code discussed in class
    Other references:
    See previous lecture.
  24. L24: Library creation, use; function pointers
    Source:
    Libraries; function pointers
    Code discussed in class
    Other references:
    King 17.7 for function pointers.
    Library creation in C
  25. L25: Files, I/O redirection, command line arguments
    Source:
    Files, etc.
    Code discussed in class
    Other references:
    King Chp 22.
    Kernighan Appendix B1 (on stdio.h).
  26. L26: Debugging - GDB
    Source:
    GDB
    Code discussed in class (code has the bug)
    Other references:
    The GDB manual
    GDB reference card
  27. L27: GCC and Make
    Source:
    GCC, make
    makefile discussed in class
    Other references:
    GCC documentation (use the right version for your compiler)
    GNU make