/Coursework

Homeworks given at Department of Computer Engineering, Middle East Technical University.

Primary LanguageCMIT LicenseMIT

Homeworks given at Department of Computer Engineering, Middle East Technical University.

Followings are the course codes, course names and descriptions:

  • ceng111 - INTRODUCTION TO COMPUTER ENG. CONCEPTS: Introduction to fundamentals of computer systems, including computer organization, operating systems, language processors and user interfaces. Introduction to algorithms and programming. Reasoning informally about the correctness and efficiency of programs. A functional programming language will be used for practical work.

  • ceng140 - C PROGRAMMING: At the end of this course the students will be able to learn and use the C programming language to design and implement advanced computer programs. Advanced programming with C: storage and control structures, recursion and programming with dynamic data structures. Homeworks are required to run on Unix environment.

  • ceng213 - DATA STRUCTURES: At the end of this course, students are expected to be able to use appropriate data structures for the solution of a given problem. Students will also be able to design and implement abstract data types which use efficient algorithms to manipulate these data structures. Various concepts such as searching, sorting, and algorithm analysis are also introduced. Classification of data structures, space and time considerations. Linked lists, stacks and queues,priority queues. Array and pointer based implementations.Heaps and Tree structures, binary search trees,balanced AVL and red-black trees. Fundamentals of sorting and searching. Hash-tables and collision handling.Representation of graphs and introduction to graph algorithms.

  • ceng223 - DISCRETE COMPUTATIONAL STRUCTURES: Fundamentals of logic, set theory, relations, functions, induction, graph theory, trees, introduction to algebraic structures, lattices.

  • ceng232 - LOGIC DESIGN: This course provides the students with the necessary background for designing hardware intensive systems. It reviews basic principles of digital hardware design, including combinational and sequential circuits and optimization methods. It proceeds with design principles underlying digital systems from simple components to more complex systems. It covers the use of algorithmic state machines to solve complex sequencing systems and teaches the foundations of how computing systems work. The course is supported by applied laboratory components that support the learning and application of these components. Introduction to computer architecture. Number systems. Boolean algebra. Logic gates and flip flops. Combinational and sequential circuit design. Registers, counters. Bus transfer. RAM, ROM units. Instruction execution and hardwired control.

  • ceng242 - PROGRAMMING LANGUAGE CONCEPTS: To introduce the basic concepts and features of programming languages and different programming paradigms. Evolution of programming languages. Overview of language translation, virtual machines, and run-time environments. Names, bindings and scopes. Values, expressions and types. Type compatibility and type checking. Storage, variables, and commands. Procedural abstraction. Generic units. Overview of functional programming paradigm. Overview of object-oriented programming paradigm: encapsulation, classes and objects, inheritance, polymorphism, dynamic binding.

  • ceng280 - FORMAL LANGU. AND ABSTRACT MACHINES: Computer Science needs mathematical languages to abstract away from particulars of computing machinery and to concentrate on systematicity, capacity, and efficiency of computing in the abstract. Theory of formal languages studies such languages while automata theory studies their acceptors. Both theories have found scientific and practical use in all areas of computer science and engineering. In fact, description of any computational process can be recast in formal language theory or automata theory. From this perspective, the theory can be seen as a vehicle for communicating the ideas clearly and precisely among computer scientists. Introduction to strings, languages and grammars. Concept of abstract machines and language acceptance. Deterministic and non-deterministic finite state machines. Regular expressions. Machines with pushdown tape. Turing Machines and recursive functions.

  • ceng315 - ALGORITHMS: To introduce some important algorithms, basic algorithm design techniques and analysis of algorithms. Selected computer algorithms: sorting, searching, string processing and graph algorithms. Algorithm design and analysis techniques. Time and computational complexities of algorithms. Introduction to NP-completeness, parallelization of algorithms, linear and dynamic programming.

  • ceng331 - COMPUTER ORGANIZATION: To introduce the organizational paradigms and to describe how a computing system works. Microprogramming and microprogrammed control. Input and output devices, I/O interfaces. Memory hierarchy and memory management. Fast arithmetic: fast multipliers and floating point operations. Reduced instruction set computer. Computer communications.

  • ceng334 - INTRO. TO OPERATING SYSTEMS: Introduction to Operating Systems. Memory Management. Process Management. Concurrent Processes. Deadlocks. Processor Management. I/O and Device Management. File Management and File Systems. Introduction to Distributed Operating Systems. Synchronization in Distributed Systems. Distributed File Systems. Overview of contemporary OS technology.

  • ceng336 - INTRO. TO EMBEDDED SYSTEMS DEVELOPMENT: CENG 336 is an intermediate course in the design and implementation of software for embedded systems, starting with assembly language and concluding with C. This course teaches the necessary concepts, tools and skills for students who plan on pursuing a career in designing and implementing embedded computing systems. These tools and skills include the design and implementation of low level software components in assembly languages, building small scale embedded software systems in C and working with Real-Time Operating Systems for larger systems with more complex structures.

  • ceng350 - SOFTWARE ENGINEERING: By the end of this course the students will be able to understand software lifecycle processes, including specification, design, construction, testing and evolution. Use software process models. Construct models of computer-based systems. Understand software quality assurance. Apply software engineering standards. Understand professional and ethical responsibilities of software engineers.

  • ceng351 - DATA MANAGEMENT AND FILE STRUCTURES: The objectives of the course are to enable the students to understand the fundamentals of file organization and processing techniques and also the internals of the storage and retrieval components of relational database systems. Introduction to DBMSs. Relational databases. Entity-Relationship data model. Relational algebra. Relational calculus. SQL. Sequential files. Unordered sequential files. Ordered sequential files. External sorting. B+tree index. Hashing. Dynamic hashing. Basics of query evaluation.

  • ceng384 - SIGNALS AND SYSTEMS FOR COMPUTER ENGINEERS: The goal of this course is to give students introduction to how to analyze signals and linear time invariant systems in the frequency and the spatial domain. With this course, the students will get background information for telecommunication networks, embedded systems, sound processing and recognition, neurocomputing, image processing, computer vision and pattern recognition.

  • ceng462 - ARTIFICIAL INTELLIGENCE: This course will introduce the basic principles in artificial intelligence research. It will cover basic AI techniques including search strategies, representation schemes, problem solving paradigms, logic programming, planning problems, machine learning algorithms, probabilty and uncertainity and etc. Main objectives of the course are:

    • To have an appreciation for and understanding of both the achievements of AI and the theory underlying those achievements.
    • To have an appreciation for the engineering issues underlying the design of AI systems.
    • To have a basic proficiency in programming of AI and machine learning systems including an ability to write simple to intermediate programs and an ability to understand code written in that language.
  • ceng488 - SPECIAL TOPICS IN CENG: GUIDED RESEARCH: This course is a one-semester course for developing a novel computer science and engineering solution to a research problem to be carried out individually or by a small team of undergraduate students under the guidance of a faculty member. The course includes one term duration research project involving focused literature survey, creative problem solving, prototyping as appropriate, experimental and/or theoretical analysis, presentation and paper writing. The purpose of the guided research is for students to further explore an area of interest she/he may have just scratched the surface of during one of the core courses. The objective of the course is to provide a medium for undergraduate students who want to take part in research projects and gain research experience. At the end of the course, the students will gain:

    • experience on conducting research
    • ability to work as a part of research group
    • experience on academic paper writing and presentation

*Course descriptions are taken from the website of the METU. For further info see https://catalog.metu.edu.tr/prog_courses.php?prog=571.