CS 전공/책, 자료들2008. 9. 6. 09:08
사용자 삽입 이미지

Now in its eighth edition, this classic book remains the complete technical-writing reference for students and professionals alike. Alphabetically organized and easy to use, its nearly 400 entries provide guidance for the most common types of professional documents and correspondence, including reports, proposals, manuals, memos, and white papers. Abundant sample documents and visuals throughout the book demonstrate effective technical communication, reflecting current practices for formatting documents and using e-mail. In addition, advice on organizing, researching, writing, and revising complements thorough treatment of grammar, usage, style, and punctuation to provide comprehensive help with writing skills. This edition has been thoroughly revised to include expanded advice for analyzing the context of different writing situations, using and integrating visuals, and dealing with ethical concerns in technical writing. Improved coverage of research now includes guidelines for IEEE-style documentation as well as clearer explanations of copyright and plagiarism concerns. Entries throughout the book have been revised, updated, consolidated, and streamlined to provide the most accurate and accessible information. Comprehensive yet concise, the Handbook of Technical Writing remains the quick reference faithful users have come to appreciate.
http://www.amazon.com/Handbook-Technical-Writing-Eighth-Practices/dp/0312352670

* 요새 읽고 있는 책, 이런 책은 이바닥 입문 전에 읽어 두었어야 되는건데....ㅡㅡ;
Posted by Bart
CS 전공/생각?2007. 11. 13. 17:59

오늘 새벽까지 기다렸다 받아본 e-mail을 보니,  Thanks for submitting your paper to XXXX 2008. we regret to inform you that your paper has not been accepted ~~~~  어쩌구 ㅡ.ㅜ 제출한 논문이 떨어졌다는 얘기다.ㅜ.ㅜ

막판에 시간에 쫒겨 논문 작성된 꼴이 좀 용두사미이 되긴 하였지만, 개념 정리는 잘되어 있어서 나름 떨어질거란 생각은 안했었는데..
 short paper라도 될 것으로 예상했건만 결과는  Reject 1, Weak reject 2 란다.

좋은 평가도 있기는 했다. "Interesting Approach and the result looks promising"

reviewer들에게 지적된 점들을 풀이하면,

1. 실험 데이터의 양이 논문의 우수성을 평가하기에는 적고, 이 때문에 관련 연구와 비교하여 어떠한 점이 우수한지 정확히 파악하기 어렵다 정도.

2. 문법적 오류들이 있어 읽기 어려우니 교정이 필요(내 작문 실력이 많이 늘었다고 나름 생각했었는데, native들은 아직 읽기 힘든가 보지. 끙. 처음에 외국 학회 논문 냈을 때 too many typos and lingo란 답변 듣고 이후로는 문법 오류 어쩌구 한적은 없었는데... ㅠㅠ)

3.  발견한 단점과 한계점들에 대한 직접적인 문제의 제기와 여기에 대한 내 연구의 기대효과에 더 초점을 맞추어서 작성하길 바란다.

그외 의견으로는 scientific paper에서 "we believe~"와 같은 표현은 쓰지 말아라. 

뭐 여기에 대해서는 동의한다.

동의하기힘든 부분은;

4. 왜 내 방식이 웹 서비스의 이점들이 제거되고, open UDDI 이용과 비교할 때 낫지 않다고 평가되었냐는 점. (솔직히 reviewer가 자세히 설명해 주었으면 좋겠다. 이 말 뜻 만으로는 무슨 얘기인지 파악하기가 어렵다구 ㅡ.ㅡ^ )
 
5. 내 방식이 rdb의 keyword search 방식을 이용하는데, 이것이 현재 challenging인데 여기에 대한 detail한 언급이 없다는 것.


결론 내리면, 이건 요렇게 수정하라는 뜻이렸다.?
실험 수와 데이터 지금보다 늘려서 여러 부문에서 결과를 보여주도록 하고, 타 연구들과도 실험 측정을 통해 직접적인 비교를 해서 논문의 공헌도를 파악하기 쉽게 해달라겠지.

5.의 경우에는 왜 짚고 넘어갔는지 모르겠다. 연구 범위가 아닌 것에 왜 디테일을 요구했는지.  초반이나, 각주로 이부분은 연구범위가 아니다를 언급하면 피해갈 수 있을까.

그리고 아으~ 2.번 문제..  예전에 도와줄 수 있다고 해줬던 Christle한테 연락하면 좀 도와줄까?


 

 
 

'CS 전공 > 생각?' 카테고리의 다른 글

IEEE TKDE 리뷰  (3) 2008.06.23
[퍼온글]나의 꿈 - 문병로  (0) 2008.04.13
몰입적 사고  (0) 2007.12.11
좋은 연구를 위해 필요한 것들..  (1) 2007.11.20
SCI&SCIE  (0) 2007.11.09
Posted by Bart
CS 전공/학회와 정보2007. 11. 12. 21:07

이 자료는 포항공과대학교에서 작성한 것으로 BK21 사업단에게 정보제공 차원에서 제공하기 위해 작성되었던 글입니다. 첨부파일(HWP)을 다운로드 하여 보시기 바랍니다. 

Posted by Bart
CS 전공/논문 쓰기2007. 11. 12. 20:52

PSEUDOCODE STANDARD

Pseudocode is a kind of structured english for describing algorithms. It allows the designer to focus on the logic of the algorithm without being distracted by details of language syntax.  At the same time, the pseudocode needs to be complete.  It describe the entire logic of the algorithm so that implementation becomes a rote mechanical task of translating line by line into source code.

In general the vocabulary used in the pseudocode should be the vocabulary of the problem domain, not of the implementation domain.  The pseudocode is a narrative for someone who knows the requirements (problem domain) and is trying to learn how the solution is organized.  E.g.,

Extract the next word from the line (good)
set word to get next token (poor)

Append the file extension to the name (good)
name = name + extension (poor)

FOR all the characters in the name (good)
FOR character = first to last (ok)

Note that the logic must be decomposed to the level of a single loop or decision. Thus "Search the list and find the customer with highest balance" is too vague because it takes a loop AND a nested decision to implement it. It's okay to use "Find" or "Lookup" if there's a predefined function for it such as String.indexOf().

Each textbook and each individual designer may have their own personal style of pseudocode. Pseudocode is not a rigorous notation, since it is read by other people, not by the computer. There is no universal "standard" for the industry, but for instructional purposes it is helpful if we all follow a similar style. The format below is recommended for expressing your solutions in our class.

The "structured" part of pseudocode is a notation for representing six specific structured programming constructs: SEQUENCE, WHILE, IF-THEN-ELSE, REPEAT-UNTIL, FOR, and CASE. Each of these constructs can be embedded inside any other construct. These constructs represent the logic, or flow of control in an algorithm.

It has been proven that three basic constructs for flow of control are sufficient to implement any "proper" algorithm.

SEQUENCE is a linear progression where one task is performed sequentially after another.
WHILE is a loop (repetition) with a simple conditional test at its beginning.
IF-THEN-ELSE is a decision (selection) in which a choice is made between two alternative courses of action.


Although these constructs are sufficient, it is often useful to include three more constructs:
 

REPEAT-UNTIL is a loop with a simple conditional test at the bottom.
CASE is a multiway branch (decision) based on the value of an expression. CASE is a generalization of IF-THEN-ELSE.
FOR is a "counting" loop.
SEQUENCE

Sequential control is indicated by writing one action after another, each action on a line by itself, and all actions aligned with the same indent. The actions are performed in the sequence (top to bottom) that they are written.

Example (non-computer)

Brush teeth
Wash face
Comb hair
Smile in mirror
Example
READ height of rectangle
READ width of rectangle
COMPUTE area as height times width
Common Action Keywords
Several keywords are often used to indicate common input, output, and processing operations.
Input: READ, OBTAIN, GET
Output: PRINT, DISPLAY, SHOW
Compute: COMPUTE, CALCULATE, DETERMINE
Initialize: SET, INIT
Add one: INCREMENT, BUMP
IF-THEN-ELSE

Binary choice on a given Boolean condition is indicated by the use of four keywords: IF, THEN, ELSE, and ENDIF. The general form is:

IF condition THEN
sequence 1
ELSE
sequence 2
ENDIF
The ELSE keyword and "sequence 2" are optional. If the condition is true, sequence 1 is performed, otherwise sequence 2 is performed.

Example

IF HoursWorked > NormalMax THEN
Display overtime message
ELSE
Display regular time message
ENDIF
WHILE

The WHILE construct is used to specify a loop with a test at the top. The beginning and ending of the loop are indicated by two keywords WHILE and ENDWHILE. The general form is:

WHILE condition
sequence
ENDWHILE
The loop is entered only if the condition is true. The "sequence" is performed for each iteration. At the conclusion of each iteration, the condition is evaluated and the loop continues as long as the condition is true.

Example

WHILE Population < Limit
Compute Population as Population + Births - Deaths
ENDWHILE

Example

WHILE employee.type NOT EQUAL manager AND personCount < numEmployees
INCREMENT personCount
CALL employeeList.getPerson with personCount RETURNING employee
ENDWHILE
CASE

A CASE construct indicates a multiway branch based on conditions that are mutually exclusive. Four keywords, CASE, OF, OTHERS, and ENDCASE, and conditions are used to indicate the various alternatives. The general form is:

CASE expression OF
condition 1 : sequence 1
condition 2 : sequence 2
...
condition n : sequence n
OTHERS:
default sequence
ENDCASE

The OTHERS clause with its default sequence is optional. Conditions are normally numbers or characters

indicating the value of "expression", but they can be English statements or some other notation that specifies the condition under which the given sequence is to be performed. A certain sequence may be associated with more than one condition.

Example

        CASE  Title  OF
                Mr      : Print "Mister"
                Mrs     : Print "Missus"
                Miss    : Print "Miss"
                Ms      : Print "Mizz"
                Dr      : Print "Doctor"
        ENDCASE

Example

        CASE  grade  OF
                A       : points = 4
                B       : points = 3
                C       : points = 2
                D       : points = 1
                F       : points = 0
        ENDCASE

REPEAT-UNTIL

This loop is similar to the WHILE loop except that the test is performed at the bottom of the loop instead of at the top. Two keywords, REPEAT and UNTIL are used. The general form is:

REPEAT
sequence
UNTIL condition
The "sequence" in this type of loop is always performed at least once, because the test is peformed after the sequence is executed. At the conclusion of each iteration, the condition is evaluated, and the loop repeats if the condition is false. The loop terminates when the condition becomes true.
 

FOR

This loop is a specialized construct for iterating a specific number of times, often called a "counting" loop.  Two keywords, FOR and ENDFOR are used. The general form is:

FOR iteration bounds
sequence
ENDFOR
In cases where the loop constraints can be obviously inferred it is best to describe the loop using problem domain vocabulary.

Example

FOR each month of the year (good)
FOR month = 1 to 12 (ok)

FOR each employee in the list (good)
FOR empno = 1 to listsize (ok)


NESTED CONSTRUCTS

The constructs can be embedded within each other, and this is made clear by use of indenting. Nested constructs should be clearly indented from their surrounding constructs.

Example

SET total to zero
REPEAT
READ Temperature
IF Temperature > Freezing THEN
    INCREMENT total
END IF
UNTIL Temperature < zero
Print total
In the above example, the IF construct is nested within the REPEAT construct, and therefore is indented.
 
 

INVOKING SUBPROCEDURES

Use the CALL keyword. For example:

CALL AvgAge with StudentAges
CALL Swap with CurrentItem and TargetItem
CALL Account.debit with CheckAmount
CALL getBalance RETURNING aBalance
CALL SquareRoot with orbitHeight RETURNING nominalOrbit

EXCEPTION HANDLING

    BEGIN
        statements
    EXCEPTION
        WHEN exception type
            statements to handle exception
        WHEN another exception type
            statements to handle exception
    END



Sample Pseudocode

"Adequate"

FOR X = 1 to 10

    FOR Y = 1 to 10
        IF gameBoard[X][Y] = 0
            Do nothing
        ELSE
            CALL theCall(X, Y) (recursive method)
            increment counter                 
        END IF
    END FOR
END FOR

"Better"

Set moveCount to 1
FOR each row on the board
    FOR each column on the board
        IF gameBoard position (row, column) is occupied THEN
            CALL findAdjacentTiles with row, column
            INCREMENT moveCount
        END IF
    END FOR
END FOR

(Note: the logic is restructured to omit the "do nothing" clause)


"Not So Good"

FOR all the number at the back of the array
    SET Temp equal the addition of each number
    IF > 9 THEN
        get the remainder of the number divided by 10 to that index
        and carry the "1"
    Decrement one
Do it again for numbers before the decimal
 

"Good Enough (not perfect)"

SET Carry to 0
FOR each DigitPosition in Number from least significant to most significant

    COMPUTE Total as sum of FirstNum[DigitPosition] and SecondNum[DigitPosition] and Carry  

    IF Total > 10 THEN
        SET Carry to 1
        SUBTRACT 10 from Total
    ELSE
        SET Carry to 0
    END IF

    STORE Total in Result[DigitPosition]

END LOOP  

IF Carry = 1 THEN
    RAISE Overflow exception
END IF
 



"Pretty Good"  This example shows how pseudocode is written as comments in the source file. Note that the double slashes are indented.

public boolean moveRobot (Robot aRobot)
{
    //IF robot has no obstacle in front THEN
        // Call Move robot
        // Add the move command to the command history
        // RETURN true
    //ELSE
        // RETURN false without moving the robot
    //END IF
}

Example Java Implementation

  • source code statements are interleaved with pseudocode.
  • comments that correspond exactly to source code are removed during coding.

public boolean moveRobot (Robot aRobot)
{
    //IF robot has no obstacle in front THEN
    if (aRobot.isFrontClear())
    {
        // Call Move robot
        aRobot.move();
        // Add the move command to the command history
        cmdHistory.add(RobotAction.MOVE);
        return true;
    }
    else // don't move the robot
    {
        return false;
    }//END IF
}
 



Document History
Date Author Change
12/2/03
JD
Added Exception Handling and more examples
2/21/03 JD Added "problem domain vocabulary" paragraph.
Modified FOR loop explanation.

출처: www.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html

Posted by Bart
CS 전공/논문 쓰기2007. 11. 12. 20:51

Computer Theory에 관련한 논문들을 읽어보다가, 여러 생소한 용어들이 눈에 보이기에 정리를 해봅니다.  왜 논문 보면 간혹 lemma 1. proposition 이런 단어들이 눈에 뜨이지요? 이러한 용어가 무엇을 뜻하는지 모르고  그냥 넘어갔는지는 않았는지요?


알아두면 논문을 이해하거나 자신의 이론을 풀어 쓰는데에 유용하겠지요.


1) Axiom- 공리(): (이론의 기초로서 가정한 명제)

 하나의 이론에서 증명 없이 바르다고 하는 명제, 즉 조건 없이 전제된 명제, 논리학에서는 무증명명제()라고도 한다.

 

2) definition - 정의(): (기호()에 대하여 그 수학적 의미를 규정한 것)

 즉, 논의의 대상을 보편적인 것으로 하기 위해, 사용되는 용어 또는 기호의 의미를 확실하게 규정한 문장이나 식()을 그 용어의 정의라고 한다. 이를테면, ‘한 내각의 크기가 직각인 삼각형을 직각삼각형이라 한다’는 직각삼각형의 정의이다.


3) theorem - 정리 (수학적으로 참인 명제 )  

즉, 공리()와 정의()로부터 증명()에 의해 정리가 유도되며, 이미 증명된 이들 정리와 공리 또는 정의를 추론()의 근거로 하여 다음 정리가 옳다는 것을 확인한다. 증명된 정리는 그 체계의 토대로서는 바른 것(참인 것)이지만 보편적인 것은 아니다. 이를테면, 유클리드기하학에서는 ‘삼각형의 내각의 합은 2직각이다’가 정리로서 성립되지만, 비유클리드기하학의 하나인 로바체프스키기하학에서는 ‘삼각형의 내각의 합은 2직각보다 작다’는 것이 성립되며, 리만기하학에서는 ‘삼각형의 내각의 합은 2직각보다 크다’는 것이 성립한다.

즉, 정리는 일군()의 공리계()를 기초로 한, 하나의 체계에 대해서만 성립한다. 어떤 정리에서 직접 유도된 것을 그 정리의 계()라고 한다. 예컨대, 그 정리가 특별한 경우로서 성립하는 때도 그 정리의 계가 된다. 또, 한 체계 중에서 공리 ·정의 이외의 명제는 모두 정리이지만, 특히 그 중의 중요한 것만 가리켜 정리라고 하는 경우도 있다. 그리고 유명한 것에는 고유의 이름을 취한 것도 있다. 예를 들면, 인명을 붙인 피타고라스의 정리, 파스칼의 정리, 메넬라우스의 정리 등과 내용에서 이름을 딴 삼수선()의 정리, 대수학의 기본정리, 미적분학의 평균값정리 등이 있다. 일반적으로 정리는 P and Q and… → R and S and…와 같은 꼴로 기술되며, P and Q and…를 이 정리의 가설 또는 가정, R and S and…를 종결 또는 결론이라고 한다.


  4) lemma - 보조정리 (어떤 정리를 증명하는 데 쓸 목적으로 증명된 명제)

   보제()라고도 한다. 예를 들면 ‘sin x의 도함수는 cos x이다’라는 정리를 보통의 방법으로 증명할 때 사용되는 0<x<π/2이면 sin x<x<tan x,

등은 보조정리라 할 수 있다.

보통 보조정리는 한 정리를 증명하기 위하여 사용되지만 경우에 따라 다른 많은 증명에 사용되기도 한다. 그런 경우 그와 같은 보조정리도 정리라 할 수 있으나, 그대로 보조정리라는 이름으로 이용된다. 유명한 것으로는 ‘졸레의 보조정리’, 함수론의 ‘슈바르츠의 보조정리’ 등이 있다. df


5) corollary- 따름 정리 :  수학용어로서 정리에서 직접 파생된 명제, 계()라고도 한다.

 1개의 정리에서 바로 유도되는 사실로서 이용가치가 많은 것을 명제의 꼴로 나타낸 것을 원래의 정리의 따름정리 또는 계라 한다.


6) proposition -명제(題) : (전통적 논리학에서 판단을 언어로 표현한 것)

  예컨대 ‘개는 동물이다’는 명제이다. 현대 논리학에서는 진위()를 물어보는 뜻이 담긴 글을 명제문()이라 한다. 유명론적() 경향이 있는 철학자 중에는 언어 표현 그 자체와는 다른 독립된 의미의 존재를 인정하는 데 회의적인 사람도 있다. 일상어로 쓰인 글에는 언어의 사용 방법이 양의적()이기 때문에 명제문인지 아닌지 문제가 되고, 명제문이라 하더라도 그 내용이 확실하지 않은 경우가 있다. 그러나 논리기호()로 쓴 글은 이러한 점에서 애매한 것이 전혀 없다. 이것을 명제식()이라고 한다. 진리()임을 강조하는 글을 명제라고 할 때도 있다


7) proof - 증명(明)

 p이면 q이다’라는 합성명제()에서 명제 p를 전제(가설 또는 가정), 명제 q를 결론(종결)이라 하고, 참(truthfullness)인 전제에서 유효한 추론()에 의해 결론을 이끌어내는 것을 증명이라고 한다. 여기서 유효한 추론이란 전제가 참이면 결론도 참인 추론을 말한다. 증명의 대부분은, p → r → q, p → r → s → q 와 같이 전제에서 출발하여 유효한 추론에 따라 연역()해 나가는 것이 보통이다. 이와 같은 증명을 직접증명이라고 한다. 이를테면, ‘a,b가 수일 때, a=b이면 a2=b2이다’의 경우, 전제 p는 a=b, 결론 q는 a2=b2이며, 증명은 다음과 같이 이루어진다. a=b → a=b, a=b → aa=bb → a2=b2 또, 다음과 같이 증명해도 무방하다. a=b → a-b=0 → (a-b)(a+b)=0 → a2-b2=0 → a2=b2

위의 직접증명에 대해, 합성명제 ‘p이면 q이다’(보통 조건명제 또는 간단히 조건이라고 한다)가 참임을 증명하는 데, 이와 동치인 합성명제 ‘∼q → ∼p이다’가 참임을 증명하는 간접증명이 있다. 여기에는 귀류법과 전환법() 등이 있다


8) theory - 이론(論)사물에 관한 지식을 논리적인 연관에 의하여 하나의 체계로 이루어 놓은 것

 

 학문이라면 거기에는 반드시 이론이 있다. 일단 이론이 형성되면 그 이론의 논리적인 결론을 끌어냄으로써 미지()의 영역에 관해서도 효과있는 예상을 하는 경우가 흔히 있다. 그러나 사물에 관한 새로운 지식으로 인하여 이론 적용에 한계가 생기는 수가 있다. 이런 경우 이론에 구애되어 사실을 무시하는 일이 허다하나 이것은 큰 잘못이다.

이론 중에서 근본적인 전제가 있는 것, 또는 자료()에 관한 보고 사항 중에서 그대로 인정해야 할 것은 공리()가 된다. 다음의 명제는 공리로부터 연역()되는 정리()가 된다. 이와 같은 논리적인 연결을 철저히 정리하면 공리론()을 얻게 된다. 여기서 이를 논리기호()로 표시하면 형식화()된 이론이 형성된다.

여기까지 정리하면 동일한 이론이 전혀 다른 복수의 사상()에 적용될 수도 있다는 것이 분명해지는 경우가 있다. 이론이 적용되는 현상() 또는 그 구조를 논리학이나 수학에서는 그 이론의 모델이라고 한다. 그러나 경험과학()에서는 이와는 반대로 하나의 현상을 설명하는 이론을 그 현상의 모델이라고 할 때가 많다. 학문 연구 과정에서 논리적 전개에 치중하는 것을 이론면(), 사상()과의 대결에 치중하는 것을 실험면()에 관한 연구라 하여 구별한다

 

Posted by Bart