Transcript ppt

Do we need theoretical
computer science in software
engineering curriculum: an
experience from Uni Novi Sad
Bansko, August 28, 2013
Andreja Tepavčević
Department of Mathematics and Informatics
Faculty of Sciences
University of Novi Sad
Serbia
Outline:
New accreditation round at Faculty of
Sciences, UNI Novi Sad
Theoretical computer science
SWEBOK
Current situation at UNI Novi Sad
Conclusion
New accreditation round at
Faculty of Sciences
Programs
• Bachelor Informatics 3 years
Modules: Computer Sciences
Information Technologies
• Bachelor Informatics 4 years
• Master Informatics 2 years:
Modules: Computer Sciences
Software Engineering
Information Technologies
Adjusting programmes
at UNI for the new accreditation round
How it was through the history of the
department?
Theoretical computer science (TCS) is a
division (or subset) of general computer
science and mathematics which focuses
on more abstract or mathematical
aspects of computing.
(from Wikipedia)
The field of TCS include algorithms,
data structures, computational
complexity theory, distributed
computation, parallel computation,
machine learning, information theory,
cryptography, quantum computation,
computational number theory and
algebra, program semantics and
verification, automata theory, the study
of randomness,…
Important aspects:
mathematical technique and rigor
IEEE Computer Society
Guide to the Software
Engineering Body of
Knowledge (SWEBOK)
The SWEBOK Guide:
characterizes the contents of the
software engineering discipline
promotes a consistent view of software
engineering worldwide
clarifies software engineering's place
with respect to other disciplines
provides a foundation for training
materials and curriculum development,
provides a basis for certification and
licensing of software engineers.
• Engineering foundations
• Mathematical foundations
• Computing foundations
Engineering foundations
Empirical Methods and Experimental
Techniques
Statistical Analysis
Measurement
Engineering Design
Modeling, Simulation, and Prototyping
Standards
Computing foundations:
Not all courses in computer science are
related or equally important to software
engineering
Computing foundations
Problem Solving Techniques
Abstraction
Programming Fundamentals and
Programming Language Basics
Debugging Tools and Techniques
Data Structure and Representation
Algorithms and Complexity
Basic Concept of a System
Computer Organization
Secure Coding,…
Mathematics for a software engineer is
mostly connected to the logic
and reasoning.
Mathematical foundations
 Sets, relations, functions
 Basic logic
 Proof Techniques
 Basics of Counting
 Graphs and Trees
 Discrete Probability
 Finite State Machines
 Grammars
 Numerical precision
 Number Theory
 Algebraic Structures
Situation at UNI Novi Sad
Software engineering curriculum:
-Bachelor Informatics 3 years’
-Master in Informatics (a module - Master in
SE)
Courses connected with TCS
 Bachelor 3 years:
Obligatory courses for both modules:
Computing foundations
Mathematical foundations
e.g. Mathematical logics and basics of
algebra, Discrete Mathematics,
Formal Languages and Automata,…
+ Several elective courses
Master in SE
It is assumed that students already
learned TCS fundamentals at bachelor
level
No obligatory courses in TCS at master
level
Some elective courses as Applied
Mathematical Statistics, Mathematical
Logics, Combinatorial Algorithms
In practice, they are rarely chosen by
students
Do we need TCS in SE curriculum?
Yes, we do because TCS provides
necessary basics to SE.
Yes, we do, although the courses and
methods should be very carefully
chosen
Yes, not because mathematicians insist
that mathematics is needed, but
because some basics is really needed
(according to SWEBOK guide).
Thank you for your attention!