{"title":"A Functional Paradigm using the C Language for Teaching Programming for Engineers","authors":"Víctor Theoktisto","doi":"10.1109/CLEI.2018.00103","DOIUrl":null,"url":null,"abstract":"Many engineering programs place in their curricula some courses in Computer Programming, whose content and quality are generally less rigorous than their Computer Science equivalents. Most use the C language as development tool, but the approach applies more effort in describing the language's peculiarities than exploiting the practical applications in engineering endeavors. The contributed programming techniques are born from the experience of teaching Functional Programming, embodied in headers that enhance depth and rigorousness in the development of high quality code: (i) Functional emphasis from the beginning; (ii) Formal Specifications with exception generation; (iii) Early focus in recursion, particularly tail recursion; (iv) Development of Abstract Data Types using C's opaque types; (v) Incorporation of First Order and Higher Order Functions; (vi) Efficient dynamic memory management using a \"garbage collector\"; (vii) Using and Integrated Developed Environment (IDE) with embedded debugger. The aforementioned headers are attached at the end of the article.","PeriodicalId":379986,"journal":{"name":"2018 XLIV Latin American Computer Conference (CLEI)","volume":"93 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2018-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2018 XLIV Latin American Computer Conference (CLEI)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/CLEI.2018.00103","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
Many engineering programs place in their curricula some courses in Computer Programming, whose content and quality are generally less rigorous than their Computer Science equivalents. Most use the C language as development tool, but the approach applies more effort in describing the language's peculiarities than exploiting the practical applications in engineering endeavors. The contributed programming techniques are born from the experience of teaching Functional Programming, embodied in headers that enhance depth and rigorousness in the development of high quality code: (i) Functional emphasis from the beginning; (ii) Formal Specifications with exception generation; (iii) Early focus in recursion, particularly tail recursion; (iv) Development of Abstract Data Types using C's opaque types; (v) Incorporation of First Order and Higher Order Functions; (vi) Efficient dynamic memory management using a "garbage collector"; (vii) Using and Integrated Developed Environment (IDE) with embedded debugger. The aforementioned headers are attached at the end of the article.