Course syllabus

Course-PM

LP3 VT24

DAT445 Fundamentals of computer programming

The course is offered by the department of Computer Science and Engineering

Contact details

  • examiner and lecturer: Jean-Philippe Bernardy <jean-philippe.bernardy@gu.se>
  • Teaching assistants:
    • Wincent Stålbert Holm <wincenth@chalmers.se>
    •  Mohammad Karimi    <karimimo@student.chalmers.se>, 
      Alex Lech          <guslechal@student.gu.se>,      
       Lukas Åkefeldt     <lukas.akefeldt@gmail.com>,     
       Abdur Arshad       <abdura@chalmers.se>,           
       Eli Uhlin          <gusuhlinel@student.gu.se>,     
       Timothy Jarebrant  <timothy.jarebrant@gmail.com>,  
       Marcus Wassenius   <marcuswa@chalmers.se>,         
       Kusai Al Malt      <kusai@student.chalmers.se>,    
       Adrian Wireklint   <adrwir@chalmers.se>,           
       Patrik Dennis      <patrikfr@chalmers.se>,     

Student Representatives:   

Slack

Course purpose

Computer programming is a basic skill needed in both studies and professional life. This course gives the basic skills that the participants can both accomplish programming tasks typical of science and engineering tasks and understand the fundamental principles of computers and programming.

Schedule

The course schedule is available on TimeEdit

The lecture topics, slides, etc. will appear as modules as the course progresses.

Course literature

John M. Zelle, Python Programming: An Introduction to Computer Science, 3rd edition, Franklin, Beedle, & Associates, 2017 https://mcsp.wartburg.edu/zelle/python/

The book is also available as e-book: https://redshelf.com/book/522399/python-programming-522399-9781590282779-john-zelle

Course design

The course consists of two lectures and three supervision sessions every week on campus.

Learning objectives and syllabus

Aim

Computer programming is a basic skill needed in both studies and professional life. This course gives the basic skills so that the students can both perform programming tasks that are typical in science and engineering as well as understand the fundamental principles of computers and programming.

Learning outcomes (after completion of the course the student should be able to)

Knowledge and understanding

  • Express mathematical formulas as programming language expressions and algorithms
  • Choose appropriate data types and data structures for different kinds of data
  • Structure large programs into manageable and reusable units by the use of concepts such as modules, classes, and functions
  • Search and find relevant program libraries and use them in adequate ways
  • Explain the relations between hardware, operating system, and user programs
  • Use programming for basic data analysis involving large files


Competence and skills

  • Write programs that manipulate numeric and textual data to perform standard programming tasks
  • Build interactive programs with both text-based and graphical user interfaces
  • Make programs that read, transform, and generate files in the file system
  • Use standard libraries and follow best programming practices
  • Test programs by methods such as unit, regression, and property-based testing
  • Use programming tools such as code editors and revision control systems


Judgement and approach

  • Assess the difficulty and resources needed for typical programming tasks
  • Analyse code written by others and find errors and possibilities for improvement

Content

The course is a first introduction to programming by using the general-purpose programming language Python. It gives a comprehensive knowledge of the language, enabling the student to write code for a wide variety of tasks and to read and reuse code written by other programmers. In parallel to learning the language, the student will be introduced to the basic concepts of computers and programming. These concepts include:

  • Data types and their binary representations in the computer
  • The relation between source code, compiler, and the machine
  • The syntactic structure of expressions, statements, functions, classes, modules, etc
  • The basics of algorithmic design by the use of iteration, recursion, decomposition to functions, and top-down vs. bottom-up
  • The basics of software design in terms of functions, classes, modules, etc

Organisation

The course consists of lectures and exercise sessions. There are also a number of programming assignments for training practical skills.

Examination form

To pass the course it is necessary to do:

  • 3 obligatory labs which must be submitted before the deadline and approved by a supervisor. The grading will be mostly based on an automatic testing, but the supervisors also have the right to reject submissions after manual inspections of the code.
  • A digital exam.