
    

    <?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://ocw.cs.pub.ro/courses/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://ocw.cs.pub.ro/courses/feed.php">
        <title>CS Open CourseWare dss:laboratoare</title>
        <description></description>
        <link>http://ocw.cs.pub.ro/courses/</link>
        <image rdf:resource="http://ocw.cs.pub.ro/courses/lib/tpl/arctic/images/favicon.ico" />
       <dc:date>2026-04-15T09:26:13+03:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://ocw.cs.pub.ro/courses/dss/laboratoare/01?rev=1565784450&amp;do=diff"/>
                <rdf:li rdf:resource="http://ocw.cs.pub.ro/courses/dss/laboratoare/02?rev=1561016454&amp;do=diff"/>
                <rdf:li rdf:resource="http://ocw.cs.pub.ro/courses/dss/laboratoare/03?rev=1561111808&amp;do=diff"/>
                <rdf:li rdf:resource="http://ocw.cs.pub.ro/courses/dss/laboratoare/04?rev=1626105491&amp;do=diff"/>
                <rdf:li rdf:resource="http://ocw.cs.pub.ro/courses/dss/laboratoare/05?rev=1561554756&amp;do=diff"/>
                <rdf:li rdf:resource="http://ocw.cs.pub.ro/courses/dss/laboratoare/06?rev=1561984141&amp;do=diff"/>
                <rdf:li rdf:resource="http://ocw.cs.pub.ro/courses/dss/laboratoare/07?rev=1626678529&amp;do=diff"/>
                <rdf:li rdf:resource="http://ocw.cs.pub.ro/courses/dss/laboratoare/08?rev=1618922410&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://ocw.cs.pub.ro/courses/lib/tpl/arctic/images/favicon.ico">
        <title>CS Open CourseWare</title>
        <link>http://ocw.cs.pub.ro/courses/</link>
        <url>http://ocw.cs.pub.ro/courses/lib/tpl/arctic/images/favicon.ico</url>
    </image>
    <item rdf:about="http://ocw.cs.pub.ro/courses/dss/laboratoare/01?rev=1565784450&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-08-14T15:07:30+03:00</dc:date>
        <title>Lab 01: Introduction to D</title>
        <link>http://ocw.cs.pub.ro/courses/dss/laboratoare/01?rev=1565784450&amp;do=diff</link>
        <description>Lab 01: Introduction to D

During this lab you will be introduced to the basic D features.

Syntax

The D programming language uses a C-style syntax that ensures a smooth transition
for programmers coming from a C\C++ background. With no further ado, let us take a
random C program and see what it takes to compile it with the D compiler:</description>
    </item>
    <item rdf:about="http://ocw.cs.pub.ro/courses/dss/laboratoare/02?rev=1561016454&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-06-20T10:40:54+03:00</dc:date>
        <title>Lab 02: Introduction to meta-programming</title>
        <link>http://ocw.cs.pub.ro/courses/dss/laboratoare/02?rev=1561016454&amp;do=diff</link>
        <description>Lab 02: Introduction to meta-programming

During this lab you will be introduced to the basic concepts of meta-programming: compile time execution and templates.

Manifest Constants

Manifest constants are variables evaluated at compile time. They cannot change their value. A manifest constant is declared by using the keywork enum:</description>
    </item>
    <item rdf:about="http://ocw.cs.pub.ro/courses/dss/laboratoare/03?rev=1561111808&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-06-21T13:10:08+03:00</dc:date>
        <title>Lab 03: Memory Safety</title>
        <link>http://ocw.cs.pub.ro/courses/dss/laboratoare/03?rev=1561111808&amp;do=diff</link>
        <description>Lab 03: Memory Safety

During this lab you will learn about the memory safety mechanisms that are available in D.

@safe functions

A class of programming errors involve corrupting data at unrelated locations in
memory by writing at those locations unintentionally. Such errors are mostly due
to mistakes made in using pointers and applying type casts.
@safe functions guarantee that they do not contain any operation that may
corrupt memory. An extensive list of operations that are forbidden in
@sa…</description>
    </item>
    <item rdf:about="http://ocw.cs.pub.ro/courses/dss/laboratoare/04?rev=1626105491&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-12T18:58:11+03:00</dc:date>
        <title>Lab 04: Advanced D topics</title>
        <link>http://ocw.cs.pub.ro/courses/dss/laboratoare/04?rev=1626105491&amp;do=diff</link>
        <description>Lab 04: Advanced D topics

Operator overloading



opAssign()



Operator overloading enables defining how user-defined types behave when
used with operators. In this context, the term overload means providing the
definition of an operator for a specific type.</description>
    </item>
    <item rdf:about="http://ocw.cs.pub.ro/courses/dss/laboratoare/05?rev=1561554756&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-06-26T16:12:36+03:00</dc:date>
        <title>Lab 05: Multithreading</title>
        <link>http://ocw.cs.pub.ro/courses/dss/laboratoare/05?rev=1561554756&amp;do=diff</link>
        <description>Lab 05: Multithreading

Parallelism

Most modern microprocessors consist of more than one core, each of which can operate as an individual processing unit. They can execute different parts of different programs at the same time.

A flow of execution through certain parts of a program is called a thread of execution or a thread. Programs can consist of multiple threads that are being actively executed at the same time. The operating system starts and executes each thread on a core and then suspen…</description>
    </item>
    <item rdf:about="http://ocw.cs.pub.ro/courses/dss/laboratoare/06?rev=1561984141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-07-01T15:29:01+03:00</dc:date>
        <title>Lab 06: Design by Introspection</title>
        <link>http://ocw.cs.pub.ro/courses/dss/laboratoare/06?rev=1561984141&amp;do=diff</link>
        <description>Lab 06: Design by Introspection

Over the years, a few programming paradigms have been successful enough to enter the casual vocabulary of software engineers: procedural, imperative, object-oriented, functional, generic, declarative. There's a B-list, too, that includes paradigms such as logic, constraint-oriented, and symbolic. The point is, there aren't very many of them altogether.</description>
    </item>
    <item rdf:about="http://ocw.cs.pub.ro/courses/dss/laboratoare/07?rev=1626678529&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-19T10:08:49+03:00</dc:date>
        <title>Lab 07: C/C++ Interoperability and Tooling</title>
        <link>http://ocw.cs.pub.ro/courses/dss/laboratoare/07?rev=1626678529&amp;do=diff</link>
        <description>Lab 07: C/C++ Interoperability and Tooling

Interfacing to C

Calling C functions from D

C functions can be called directly from D. There is no need for wrapper functions, argument swizzling, and the C functions do not need to be put into a separate DLL. The C function must be declared and given a calling convention, most likely the “C” calling convention, for example:</description>
    </item>
    <item rdf:about="http://ocw.cs.pub.ro/courses/dss/laboratoare/08?rev=1618922410&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-20T15:40:10+03:00</dc:date>
        <title>Lab 08: WebApp Tutorial using Vibe.d</title>
        <link>http://ocw.cs.pub.ro/courses/dss/laboratoare/08?rev=1618922410&amp;do=diff</link>
        <description>Lab 08: WebApp Tutorial using Vibe.d</description>
    </item>
</rdf:RDF>
