Checking date: 20/05/2022


Course: 2022/2023

Programming
(18302)
Dual Bachelor in Engineering Physics and Industrial Technologies Engineering (Plan: 455 - Estudio: 370)


Coordinating teacher: ALVAREZ RODRIGUEZ, JOSE MARIA

Department assigned to the subject: Computer Science and Engineering Department

Type: Basic Core
ECTS Credits: 6.0 ECTS

Course:
Semester:

Branch of knowledge: Engineering and Architecture



Requirements (Subjects that are assumed to be known)
-Experience in the use of computers will be valuable.
Objectives
Basic competences: CB1. Students have demonstrated knowledge and understanding in a field of study that builds upon their general secondary education, and is typically at a level that, whilst supported by advanced textbooks, includes some aspects that will be informed by knowledge of the forefront of their field of study CB2. Students can apply their knowledge and understanding in a manner that indicates a professional approach to their work or vocation, and have competences typically demonstrated through devising and sustaining arguments and solving problems within their field of study CB3. Students have the ability to gather and interpret relevant data (usually within their field of study) to inform judgments that include reflection on relevant social, scientific or ethical issues CB4. Students can communicate information, ideas, problems and solutions to both specialist and non-specialist audiences CB5. Students have developed those learning skills that are necessary for them to continue to undertake further study with a high degree of autonomy General competences: CG2. Learn new methods and technologies from basic scientific and technical knowledge, and being able to adapt to new situations. CG3. Solve problems with initiative, decision making, creativity, and communicate and transmit knowledge, skills and abilities, understanding the ethical, social and professional responsibility of the engineering activity. Capacity for leadership, innovation and entrepreneurial spirit. CG5. Use the theoretical and practical knowledge acquired in the definition, approach and resolution of problems in the framework of the exercise of their profession. CE3. Use and program computers, operating systems, databases and software with application in engineering, and implement numerical algorithms in low and high level languages. CT1. Work in multidisciplinary and international teams as well as organize and plan work making the right decisions based on available information, gathering and interpreting relevant data to make judgments and critical thinking within the area of study. RA1. To have acquired sufficient knowledge and proved a sufficiently deep comprehension of the basic principles, both theoretical and practical, and  methodology of the more important fields in science and technology as to be able to work successfully in them; RA2. To be able, using arguments, strategies and procedures developed by themselves, to apply their knowledge and abilities to the successful solution of complex technological problems that require creating and innovative thinking; RA3. To be able to search for, collect and interpret relevant information and data to back up their conclusions including, whenever needed, the consideration of any social, scientific and ethical aspects relevant in their field of study; RA6. To be aware of their own shortcomings and formative needs in their field of specialty, and to be able to plan and organize their own training with a high degree of independence. According to "the common European framework for ICT Professionals in all industry sectors": B.1. Application Development Level 3 B.2. Component Integration Level 2 B.3. Testing Level 2 B.5. Documentation Production Level 3 C.4. Problem Management Level 3
Skills and learning outcomes
Description of contents: programme
1 Basic Concepts. 1.1 Structure of a computer system: hardware and software. Information encoding. 1.2 Bool algebra. 1.3 The notion of programming language. Programming paradigms: structured programming. 1.4 Basic definitions: algorithm, program, process, etc. 1.5 Compilation, debugging and execution processes. 1.6 Pseudocode. 2 Basic elements of programming. 2.1 Identifiers. 2.2 Variables and constants. 2.3 Simple datatypes. 2.4 Operators, expressions and statements. 3 Control flow. 3.1 Conditional statements. 3.2 Loop statements. 3.3 Other control flow statements. 4 Data structures and user-defined datatypes. 4.1 Definition and design principles. 4.2 Strings: concept, management and application. 4.3 Arrays, tuples and sets: concept, management and application. 4.4 Dictionaries: concept, management and application. 5 Subprograms: procedures and functions 5.1 Definition and design principles. 5.2 Function signature, parameters and invocation. 5.3 Introduction to recursive functions. 5.4 Other paradigms: Object-Oriented programming introduction. 6 Basic algorithms. 6.1 Searching and sorting. 7 Resource management. 7.1 Static vs dynamic memory 7.2 Memory basic operations: allocation and free. 8 Input/Output system. 8.1 File definition, use and types: text and binary. 8.2 File management: create, write, read and delete operations.
Learning activities and methodology
Theoretical Lectures: 1 ECTS Practical Lectures: 1 ECTS - Exercise resolution - Best coding practices - General tutoring Team Work: 3 ECTS - Project design and development - Application of best coding practices Individual Work: 1 ECTS - Contribution to team project - Study and preparation of exams
Assessment System
  • % end-of-term-examination 30
  • % of continuous assessment (assigments, laboratory, practicals...) 70
Calendar of Continuous assessment
Basic Bibliography
  • Allen B. Downey. Think Python: How to Think Like a Computer Scientist, 2nd edition. O'Reilly. 2015
  • Andrew Koenig. C Traps and Pitfalls. Addison-Wesley Professional. 1989
  • Anthony Scopatz, Kathryn D. Huff . Effective Computation in Physics: Field Guide to Research with Python. O'Reilly. 2015
  • Brian W. Kernighan / Dennis Ritchie. The C Programming Language. Pearson. 2015
  • David M. Beazley. Python Cookbook: Recipes for Mastering Python 3. O'Reilly. 2011
  • Jose María Alvarez Rodríguez. Hands on Programming with Python: Theory and Practice. Amazon KDP Publishing. 2020
  • K. N. King . C Programming: A Modern Approach, 2nd Edition. W. W. Norton & Company. 2008
  • Luciano Ramalho. Fluent Python. O'Reilly. 2015
  • Mark Lutz . Learning Python. 0'Reilly. 2013
  • Paul Barry. Head-First Python, 2nd edition. O'Reilly. 2016
  • Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship . Prentice Hall. 2008
  • Samuel P. Harbison, Guy L. Steele Jr. . C: A Reference Manual, 5th Edition. Pearson. 2002
  • Zed A. Shaw. Learn Python 3 the Hard Way. Addison-Wesley. 2016
Recursos electrónicosElectronic Resources *
Additional Bibliography
  • Peter Prinz, Tony Crawford. C in a Nutshell. O'Reilly Media. 2015
  • Richard M. Reese . Understanding and Using C Pointers. O'Reilly Media. 2013
Recursos electrónicosElectronic Resources *
(*) Access to some electronic resources may be restricted to members of the university community and require validation through Campus Global. If you try to connect from outside of the University you will need to set up a VPN


The course syllabus may change due academic events or other reasons.


More information: https://www.inf.uc3m.es/en/component/comprofiler/userprofile/joalvare